我正在使用webBrowser.Navigate(url)
控制来显示页面
我注意到这个动作从当前控制(网格)窃取焦点,而不是我有问题将网格重新聚焦(累了myGrid.Focus,.Select等...)
这实际上是浏览器烦人的行为......
有没有人知道如何通过浏览器防止焦点窃取或(如果不是)热来强制控制焦点?
修改
我还尝试将webBrowser.DocumentCompleted
事件重点放回网格
编辑2
测试这个的好例子是打开PDF 文件webBrowser.Navigate(@"C:\TEMP\test.pdf")
我相信这是ActiveX问题。乍一看,它看起来这不是聚焦控制的问题,而是放弃整个Form焦点......
编辑3
我尝试了另一种方法:表单keyPress事件:我认为我可以捕获表单的keyPress并将焦点从WebBrowser / AdobeReader ActiveX移动到我的控件。
但令人惊讶的是事件并没有被解雇!看起来读取所有控制权,除非你鼠标点击(至少)表单的标题,否则无法以编程方式执行任何操作
有任何建议吗?
答案 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();
}