Acrobat Reader ActiveX在WebBrowser中窃取焦点[C#]

4
我正在使用webBrowser.Navigate(url)控件来显示页面。
我注意到这个动作会从当前控件(网格)中夺取焦点,然后我就无法将焦点重新集中在网格上(尝试了myGrid.Focus、.Select等...)
这真的是浏览器非常烦人的行为...
有人知道如何防止浏览器窃取焦点或(如果不行)如何强制将控件重新聚焦吗?
编辑:
我也尝试过webBrowser.DocumentCompleted事件来将焦点重新聚焦到网格上
编辑2:
测试这个问题的好方法是打开PDF文件webBrowser.Navigate(@"C:\TEMP\test.pdf")。 我相信这是ActiveX的问题。乍一看,这似乎不是控件失去焦点的问题,而是整个表单失去焦点...
编辑3:
我尝试了另一种方法:Form keyPress事件:我以为我可以捕获表单的keyPress并将焦点从WebBrowser / AdobeReader ActiveX移动到我的控件。 但令人惊讶的是,事件没有被触发!看起来读者控制了所有控件,除非你在(至少)表单标题上进行鼠标单击,否则没有办法在程序上执行任何操作。
有什么建议吗?
1个回答

3

正如@nobugz所说-我发现了使用Adobe Reader ActiveX控件的副作用。

我想我已经找到了解决方法。虽然不太优雅,但对我来说很有效... :)
以下是我使用计时器和浏览器文档完成事件重新聚焦控件的方法:

    private void webBrowser1_DocumentCompleted( object sender, WebBrowserDocumentCompletedEventArgs e ) {
        timer1.Interval = 100;
        timer1.Start();
    }

    private void timer1_Tick( object sender, EventArgs e ) {
        if (this.textBox1.Focused) {
            timer1.Stop();
            return;
        }

        this.textBox1.Focus();
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接