1

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

提前致谢

4

3 回答 3

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;
    }
}

PreviewKeyDownWPF 版本上确实存在事件,但我没有尝试过等效代码。WebBrowser由于 WPF 版本缺乏功能,我改为在 WPF 中托管 winforms 。

于 2013-05-02T15:17:40.330 回答
2

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

于 2012-05-23T13:22:40.887 回答
0

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

初始化:

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 的回答

于 2021-06-17T13:23:00.590 回答