处理 WebBrowser 控件上的 Tab 键按下并防止在 Html 元素之间切换

Handle Tab Key Press on WebBrowser Control and Prevent Switching between Html Elements

我正在开发 WebBrowser 控制应用程序,我需要处理 Tab 按键并防止在 html 元素之间切换。我无法使用 KeyDown 事件,因为 WebBrowser 控件不支持这些事件。所以看来我必须使用 PreviewKeyDown 或类似的东西。知道我该如何编程吗?

您可以点击 KeyDown event of WebBrowser.Document.Body 并检查下键是否为 Tab 防止默认操作 bu 设置 e.ReturnValue = false; 并执行您想要的操作。

您可以使用 HtmlElementEventArgs 属性来了解按下的键和修改键的状态。

private void Form1_Load(object sender, EventArgs e)
{
    webBrowser1.Navigate("http://www.google.com");
    //Attach a handler to DocumentCompleted
    webBrowser1.DocumentCompleted += webBrowser1_DocumentCompleted;
}

void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    //Attach a handler to Body.KeyDown when the document completed
    webBrowser1.Document.Body.KeyDown += Body_KeyDown;
}

void Body_KeyDown(object sender, HtmlElementEventArgs e)
{
    if(e.KeyPressedCode==(int)Keys.Tab)
        MessageBox.Show("Tab Handled");
    //Prevent defaut behaviour
    e.ReturnValue = false;
}

您也可以将以上代码限制为单个元素:

webBrowser1.Document.GetElementById("someid").KeyDown += Body_KeyDown;