处理 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;
我正在开发 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;