窗口内用到WebBrowser控件,鼠标点击Web控件后,再点击Text控件,光标不显示。这个问题如何解决?

舉杯邀明月 2015-07-02 02:53:17
新建一个标准EXE工程,控件工具箱中添加上部件:Microsoft Internet Controls
首先在窗体上画一个WebBrowser控件WebBrowser1 ; 然后,再画两个TextBox。
最后再画上其它的能接收焦点的控件(按钮、ListBox等)。
所有控件不用改名。

添加如下代码:
Private Sub Form_Load()
WebBrowser1.Navigate "about:blank"
WebBrowser1.Document.Write "<html><body style='overflow:hidden'><p>ABC</body></html>"
End Sub

准备工作完成。 

现在可以运行程序,注意现象(假设画的控件只有WebBrowser1、Text1、Text2、Command1):
1. 启动程序后,看不到“有焦点”的控件,说明焦点是在第1个控件WebBrowser1 上面的。
  按一下TAB键,这时焦点应该切换到Text1上了,并且可以看到Text1内显示了光标。
2. 鼠标点击WebBrowser1,再点Text1。 此时焦点应该是在Text1上了,但它里面的光标不显示!
3. 但如果此时再点Text2,Text2得到焦点,光标会显示出来。再点Text1,它的光标也能显示了。
4. 在2和3的操作中,把Text1和Text2的顺序对调一下,效果也是一样的。
5. 点击WebBrowser1,然后再点Command1,可以看到按钮获得焦点,并显示了虚框。
6. 启动程序,单击WebBrowser1一下,然后多次按TAB键切换控件焦点。
  可以看到,Text1中的光标每次在获得焦点时都不显示。

总的来说,就是:
 点击WebBrowser控件后,再点TextBox,此时这个TextBox的光标不会显示
 必须从别的能获得焦点的控件上把焦点切换回来时,它才能显示。
 而别的控件(命令按钮、列表框、下拉列表框、单选按钮、复选框等等)则全部“反应正常”!

我需要解决的问题是:如何能够让焦点从WebBrowser控件切换到TextBox上时,它的光标能够正常显示?

希望能有高手来解决。反正这个我是“找不着北”的了。
...全文
165 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
舉杯邀明月 2015-07-03
  • 打赏
  • 举报
回复
我在准备HOOK处理了……
Tiger_Zhao 2015-07-03
  • 打赏
  • 举报
回复
果真很怪异!
简单地发送刷新消息不行,只能通过转移焦点让Text1把光标显示出来。
Private Sub Text1_GotFocus()
Static bReEntry As Boolean

If bReEntry Then Exit Sub
bReEntry = True

Debug.Print Now(), "Text1_GotFocus()"
Text1.Enabled = False
DoEvents
Text1.Enabled = True
DoEvents
Text1.SetFocus
DoEvents

bReEntry = False
End Sub
舉杯邀明月 2015-07-03
  • 打赏
  • 举报
回复
是不是我问的问题,都比较叼? 高手去哪了………………
舉杯邀明月 2015-07-02
  • 打赏
  • 举报
回复
我是不是应该移到别的版块去?

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧