安装IE 10后,WebBrowser控件不会在双击时自动选择文本

Joh*_*ohn 6 .net webbrowser-control winforms

注意:这是关于控件的内置行为,而不是创建双击事件.

我的一个项目使用Windows.Forms.WebBrowser控件作为HTML的编辑器和查看器.它已经工作好多年但突然我注意到,在我双击它之前会自动选择被点击的单词(这不是我的代码,只是控件发生了).

突然(不完全确定何时),双击控件中的文本(在编辑模式或视图模式下)都不执行任何操作.很难排除故障因为它不是我的代码所做的,但是,因为我过去依赖于这个功能,现在它正在影响我的最终产品.

知道最近会发生什么变化(在Windows或.Net中)会影响到这一点(我的应用程序的相同版本在较旧的Win7中运行良好但在最新的Win7中运行不正常)?另外,如何恢复以前的功能?我必须连接自己的双击甚至在DOM上然后开始解析文本以手动选择它(呃!)?

我一直在寻找这个问题的答案,但主要是我只是看到如何连接到DOM事件,没有关于最近会导致上述问题的变化.任何帮助将不胜感激.

当问题发生时,我正在使用VS 2010,VB,Win7 x64,IE 10.0.6,.Net 3.5(无论最新的是什么)(编译所以我怀疑它是VS或VB).

当我在Win7 x86上使用IE 8(Win7 Pro plain,安装了零更新)运行完全相同的代码(已编译)时,它的工作正常.

经过一些进一步的测试,在Win7 x86全新安装(一切都很好)上,一旦我安装IE 10并且没有问题,问题就开始发生了.所以,我很确定问题出在IE 10上.

重现步骤:

  1. 在VS 2010中创建一个新的VB.Net项目,目标是.Net 3.5
  2. 创建一个usercontrol <---这一步是关键
  3. 将webbrowser添加到usercontrol
  4. 将此代码添加到usercontrol

    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
    
    Run Code Online (Sandbox Code Playgroud)
  5. 将该控件添加到窗体

  6. 使用以下按钮向表单添加一个按钮.单击事件:

    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
    
    Run Code Online (Sandbox Code Playgroud)
  7. 运行项目并单击按钮

  8. 然后,尝试双击"有趣"一词,注意它没有选择.

如果您直接在表单上抛出webbrowser控件,它将正常工作.问题出在usercontrol上(更新到IE10后只是一个问题).

我可以使用VS 2010使用.Net 3.5和4.0重现问题.我可以使用.Net 4.5使用VS 2012重现问题.

Joh*_*ohn 3

该问题实际上是 IE 10 中的一个错误。微软已在此处确认了这一点。

最可悲的是,他们说他们不会很快修复它(如果有的话),因为它影响的人太少了(尽管它确实影响了我公司的数千名客户)。