注意:这是关于控件的内置行为,而不是关于创建双击事件。
我的一个项目使用 Windows.Forms.WebBrowser 控件作为 HTML 的编辑器和查看器。它多年来一直运行良好,但突然我注意到,在我双击之前,它会自动选择被点击的单词(这不是我的代码,只是发生在控件上)。
突然(不确定何时),双击控件中的文本(无论是在编辑模式下还是在查看模式下)什么都不做。很难排除故障,因为这不是我的代码在做的,但是,由于我过去依赖此功能,现在它正在影响我的最终产品。
知道最近会发生什么变化(在 Windows 或 .Net 中)会影响这一点(我的应用程序的相同版本在较旧的 Win7 中运行良好,但在最新的 Win7 中运行良好)?另外,我怎样才能恢复以前的功能?我必须连线自己双击 DOM,然后开始解析文本以手动选择它(嗯!)?
我已经到处寻找这个问题的答案,但大多数时候我只是看到如何连接到 DOM 事件,没有关于最近会导致上述问题的更改)。任何帮助将不胜感激。
当问题发生时,我正在使用 VS 2010、VB、Win7 x64、IE 10.0.6、.Net 3.5(无论最新的是什么)(已编译,所以我怀疑它是 VS 还是 VB)。
当我在带有 IE 8(Win7 Pro 普通版,安装了零更新)的 Win7 x86 上运行完全相同的代码(编译)时,它工作得很好。
经过一些进一步的测试,在 Win7 x86 全新安装(一切都很好)上,一旦我安装了 IE 10 而没有其他问题,问题就开始发生了。所以,我很确定问题出在 IE 10 上。
重现步骤:
- 在 VS 2010 中创建一个新的 VB.Net 项目,目标是 .Net 3.5
- 创建用户控件<---这一步是关键
- 将网络浏览器添加到用户控件
将此代码添加到用户控件
Public Sub LoadHTML(html As String) WebBrowser1.DocumentText = html Do Until WebBrowser1.ReadyState = WebBrowserReadyState.Complete Application.DoEvents() Loop WebBrowser1.Document.Body.SetAttribute("contentEditable", "false") End Sub
将该控件添加到窗体
使用以下按钮向表单添加一个按钮。单击事件:
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click UserControl1.LoadHTML("<html><body>This is a test interesting is it not?</body></html>") End Sub
运行项目并单击按钮
- 然后,尝试双击单词“interesting”并注意它没有被选中。
如果您将 webbrowser 控件直接放在表单上,它将正常工作。问题出在用户控件上(只有更新到 IE10 后才有问题)。
我可以使用 .Net 3.5 和 4.0 使用 VS 2010 重现该问题。我可以使用 .Net 4.5 使用 VS 2012 重现该问题。