WebBrowser从我的表单“窃取”KeyDown事件

时间:2011-03-02 08:22:03

标签: c# .net winforms webbrowser-control

我在WebBwoser内有一个Form,我希望捕获Ctrl + O组合键以用作菜单项的快捷方式。我的问题是,如果我单击WebBrowser并按Ctrl + O,将弹出一个Internet Explorer对话框,而不是执行我的菜单项。我将Form的{​​{1}}属性设置为KeyPreview。另外,我为true事件添加了一个事件处理程序,但在单击KeyDown后它停止调用。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:7)

这应该可以解决您的问题。它禁用了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");
        }
    }

答案 1 :(得分:2)

您可以覆盖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.
}