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

时间:2011-03-15 13:52:41

标签: c# .net

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

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

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

干杯, 哈里什

4 个答案:

答案 0 :(得分:10)

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

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

答案 1 :(得分:1)

使用form.ShowDialog(form)代替form.Show(),然后就可以了! 其中form是Windows Form

的正在运行的实例

答案 2 :(得分:1)

这是我的解决方案

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();
    }
}

答案 3 :(得分:0)

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

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

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