我正在使用WebBrowser
控制应用,我需要处理 Tab 按键并阻止在html元素之间切换。我无法使用KeyDown
个事件,因为WebBrowser
Control并不支持这些事件。所以我似乎必须使用PreviewKeyDown
或类似的东西。关于如何编程的任何想法?
答案 0 :(得分:2)
您可以查看KeyDown
WebBrowser.Document.Body
事件并检查向下键是否为 Tab 阻止默认操作设置e.ReturnValue = false;
并执行您想要的操作。< / p>
您可以使用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;