WPF WebBrowser控制如何禁用IE的短键?

时间:2012-05-23 13:12:27

标签: c# wpf controls

大家好我有问题我在应用程序中使用WPF WebBrowser控件,我需要 禁用IE的短键,例如 Ctrl + N 等 有没有办法解决这个问题? 请帮帮我。

提前致谢

3 个答案:

答案 0 :(得分:6)

在winforms WebBrowser上,您还可以处理PreviewKeyDown事件并设置IsInputKey = true。这使您可以更好地控制要禁用的快捷方式。例如,您只想禁用ctrl n和ctrl o,但保留ctrl f并复制/粘贴。

    void browser_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
    {
        if ((e.KeyCode == Keys.N || e.KeyCode == Keys.O) && e.Control)
        {
            e.IsInputKey = true;
        }
    }

PreviewKeyDown甚至存在于WPF版本上,但我还没有尝试过等效的代码。我改为在WPF中托管winforms webbrowser,因为WPF版本缺乏功能。

答案 1 :(得分:2)

将WebBrowser控件的WebBrowserShortcutsEnabled属性设置为false应该可以完成您要执行的操作。

答案 2 :(得分:0)

添加有关如何在 WPF WebBrowser 控件中禁用某些快捷方式/热键的最终答案。

初始化:

Browser = new WebBrowser();
Browser.LoadCompleted += DocumentLoaded;
Browser.PreviewKeyDown += BrowserOnPreviewKeyDown;

事件处理:

private void BrowserOnPreviewKeyDown(object sender, KeyEventArgs e)
{
    Key key = (e.Key == Key.System ? e.SystemKey : e.Key);
    switch (key)
    {
        // disable F5
        case Key.F5:
            e.Handled = true;
            return;
        // disable Ctrl + O, Ctrl + N, Ctrl + L
        case Key.O:
        case Key.N:
        case Key.L:
            if (e.KeyboardDevice.IsKeyDown(Key.LeftCtrl))
            {
                e.Handled = true;
            }
            return;
        case Key.P: // Print dialog
            if (e.KeyboardDevice.IsKeyDown(Key.LeftCtrl))
            {
                // is handled, when printing is disabled
                e.Handled = !EnablePrintHotKey;
            }
            return;
    }
}

基于@curlyhairedgenius 的回答