我正在开发一个 WebBrowser
控件应用程序,我需要处理 Tab 按键并防止在 html 元素之间切换。我不能使用 KeyDown
事件,因为 WebBrowser
控件不支持这些事件。所以看来我必须使用 PreviewKeyDown
或类似的东西。关于如何对此进行编程的任何想法?
最佳答案
你可以处理KeyDown
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;
关于c# - 处理 WebBrowser 控件上的 Tab 键按下并防止在 Html 元素之间切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39252444/