【问题标题】:WPF WebBrowser control how to disable shortkeys of IE?WPF WebBrowser控件如何禁用IE的快捷键?
【发布时间】:2012-05-23 13:12:27
【问题描述】:

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

提前致谢

【问题讨论】:

    标签: c# wpf controls


    【解决方案1】:

    在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 版本缺乏功能,我改为在 WPF 中托管 winforms WebBrowser

    【讨论】:

    • 同理,使用e.Handled = true;
    【解决方案2】:

    将 WebBrowser 控件的 WebBrowserShortcutsEnabled 属性设置为 false 应该可以完成您想要做的事情。

    【讨论】:

    • 感谢回答 WinForms 控件没问题,但我使用的是 WPF 控件
    • 你可以使用 webbrowser 的 keydown 事件来包装密钥。
    【解决方案3】:

    添加关于如何在 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 的回答

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-24
      • 2013-04-26
      • 2015-10-01
      • 1970-01-01
      • 2015-06-13
      • 2010-09-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多