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

最佳答案

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

webBrowser1.WebBrowserShortcutsEnabled = false;

您可能想研究是否还需要IsWebBrowserContextMenuEnabled

如果您需要一些加速键在浏览器上处于 Activity 状态,则以下内容也可以解决您的问题。但是,这种方法需要一些东西来捕获焦点。 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");
        }
    }

关于c# - 我的表单中的WebBrowser “steals” KeyDown事件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5165019/

10-13 06:58