Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# “网络浏览器”;“偷窃”;从我的表单中键入事件_C#_.net_Winforms_Webbrowser Control - Fatal编程技术网

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
!。始终带有笑话。