WebBrowser从我的表单"窃取"KeyDown事件

Jua*_*uan 5 .net c# webbrowser-control winforms

我有一个WebBwoser内部Form,我想捕获Ctrl + O组合键,用作菜单项的快捷方式.我的问题是,如果我单击WebBrowser并按Ctrl + O,将弹出一个Internet Explorer对话框,而不是执行我的菜单项.我把我FormKeyPreview财产设置为true.另外,我为事件添加了一个事件处理程序KeyDown,但是在单击后会停止调用WebBrowser.我怎样才能解决这个问题?

Fun*_*eng 7

这应该可以解决您的问题.它禁用了Web浏览器的加速键.

webBrowser1.WebBrowserShortcutsEnabled = false;
Run Code Online (Sandbox Code Playgroud)

您可能想要探索是否需要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");
        }
    }
Run Code Online (Sandbox Code Playgroud)

  • 那个'Webbrowser`!总是带着笑话. (2认同)