C# “网络浏览器”;“偷窃”;从我的表单中键入事件
我在C# “网络浏览器”;“偷窃”;从我的表单中键入事件,c#,.net,winforms,webbrowser-control,C#,.net,Winforms,Webbrowser Control,我在表单中有一个网络浏览器,我想捕获Ctrl+O组合键,用作菜单项的快捷方式。我的问题是,如果我单击WebBrowser并按Ctrl+O,将弹出一个Internet Explorer对话框,而不是执行我的菜单项所做的操作。我已将我的表单的键预览属性设置为true。此外,我还为KeyDown事件添加了一个事件处理程序,但在我单击WebBrowser之后,它就不再被调用了。如何解决此问题?这应该可以解决您的问题。它禁用了web浏览器的快捷键 webBrowser1.WebBrowserShortcu
表单
中有一个网络浏览器
,我想捕获Ctrl+O组合键,用作菜单项的快捷方式。我的问题是,如果我单击WebBrowser
并按Ctrl+O,将弹出一个Internet Explorer对话框,而不是执行我的菜单项所做的操作。我已将我的表单
的键预览
属性设置为true
。此外,我还为KeyDown
事件添加了一个事件处理程序,但在我单击WebBrowser
之后,它就不再被调用了。如何解决此问题?这应该可以解决您的问题。它禁用了web浏览器的快捷键
webBrowser1.WebBrowserShortcutsEnabled = false;
您可能还想了解是否需要启用IsWebBrowserContextMenuEnabled
如果需要在浏览器上激活某些加速器键,以下操作也可以解决您的问题。然而,这种方法需要一些东西来捕捉焦点MessageBox.Show()
和dialog.ShowDialog()
可以完成这项工作
private void DoSomething()
{
webBrowser1.PreviewKeyDown += new PreviewKeyDownEventHandler(webBrowser1_PreviewKeyDown);
}
private void webBrowser1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
if (e.Control && e.KeyCode == Keys.O)
{
menuItem.PerformClick();
// MessageBox.Show("Done");
}
}
您可以重写ProcessCmdKey方法:
protected override bool ProcessCmdKey(ref Meassage msg, Keys keyDaya)
{
//Trap for Key down
return true; //false if you want to suppress the key press.
}
那么,这是唯一可能的解决办法吗?我希望用户能够通过按Ctrl+F进行搜索等其他操作。+1如果网络速度超过我,当我试图在MSDN上查找链接时,我的浏览器将挂起:(您可以在
webBrowser
上捕获PreviewKeyDown
,如我上面编辑的答案所示。如果webBrowser1.WebBrowserShortcutsEnabled属性为true,则我收到了两个PreviewKeyDown调用。将其设置为false时,每按一个实键只生成一个调用。这webBrowser
!。始终带有笑话。