将WebBrowser控件聚焦在C#应用程序中

我在Windows Form托管了一个WebBrowser控件。 该控件用于显示在运行时创建的超链接。 这些链接指向一些HTML页面和PDF文档。

问题是,当加载托管浏览器控件的表单时,焦点在于表单。 按下TAB键时,焦点不会切换到第一个超链接。 但是,如果我在控件上执行鼠标单击然后点击TAB键,则选项卡焦点现在位于第一个超链接上。 我尝试在WebBrowser控件上使用Select() ,然后我调用了Focus() ,但它没有解决问题。

有关如何设置选项卡的任何想法都集中在加载时的第一个超链接? 谢谢。

干杯,哈里什

我想这可能是因为在页面完全加载之前设置了焦点。 试试这个:

 private void Go(string url) { webBrowser1.Navigate(url); webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted); } void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { webBrowser1.Document.Body.Focus(); } 

您还可以通过获取第一个链接的HtmlElement直接在第一个链接上自动选择焦点。

如果上述方法不起作用,您可能需要检查代码的其他部分,以查看是否有其他内容正在捕获焦点。 尝试在代码中搜索SelectFocusActiveControl

使用form.ShowDialog(form)代替form.Show() ,然后它将工作!
其中form是Windows Form的运行实例

这是我的解决方案

 private void txtAdres_KeyPress(object sender, KeyPressEventArgs e) { int licznik = 1; if (e.KeyChar == (char)13) { string adres = txtAdres.Text; webBrowser1.Navigate(adres); licznik = 0; } if (licznik == 0) { webBrowser1.Focus(); } } 

在正常情况下,将WebBrowser控件的TabIndex设置为零就足够了。 这样,当表单加载时,控件将被聚焦,按下TAB将遍历链接。

请注意,您还应该更改TabIndex上其他控件的TabIndex

如果这不能解决您的问题,则需要添加有关托管控件的表单的复杂性的更多详细信息。