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

时间:2010-03-22 08:23:51

标签: .net winforms webbrowser-control

我正在使用webBrowser.Navigate(url)控制来显示页面 我注意到这个动作从当前控制(网格)窃取焦点,而不是我有问题将网格重新聚焦(累了myGrid.Focus,.Select等...)
这实际上是浏览器烦人的行为......

有没有人知道如何通过浏览器防止焦点窃取或(如果不是)热来强制控制焦点?

修改
我还尝试将webBrowser.DocumentCompleted事件重点放回网格

编辑2
测试这个的好例子是打开PDF 文件webBrowser.Navigate(@"C:\TEMP\test.pdf") 我相信这是ActiveX问题。乍一看,它看起来这不是聚焦控制的问题,而是放弃整个Form焦点......

编辑3
我尝试了另一种方法:表单keyPress事件:我认为我可以捕获表单的keyPress并将焦点从WebBrowser / Adob​​eReader ActiveX移动到我的控件。 但令人惊讶的是事件并没有被解雇!看起来读取所有控制权,除非你鼠标点击(至少)表单的标题,否则无法以编程方式执行任何操作

有任何建议吗?

1 个答案:

答案 0 :(得分: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();
    }