gpt4 book ai didi

c# - WebBrowser 'steals' 快捷键

转载 作者:太空宇宙 更新时间:2023-11-03 16:10:54 27 4
gpt4 key购买 nike

问题:

我有一个 WebBrowser 并公开了它的 ActiveX 方法。在我的 WebBrowser 所在的表单中,我有一个带有快捷方式的 MainMenuStrip。只有当我在我的表单上的文本框中输入时,快捷方式才能正常工作。例如,当我按下 CTRL + N 时,我的表单的快捷方式 - 而不是打开新表单,WebBrowser 当前所在的页面在 IE 中打开。

我尝试过的:

  1. 我曾尝试使用不起作用的计时器每 100 毫秒聚焦一次表单(无论如何这都不是一个可行的选择,因为它不是很微妙并且程序必须使用 SendKeys 等小心地导航 WebBrowser) .

  2. WebBrowser 代码:

    this.webBrowser1.WebBrowserShortcutsEnabled = false;
    this.webBrowser1.AllowWebBrowserDrop = false;
    this.webBrowser1.IsWebBrowserContextMenuEnabled = false;
  3. 继承自 WebBrowser 并覆盖 ProcessCmdKey:

    protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
    {
    if (keyData == (Keys.Control | Keys.N))
    {
    newToolStripMenuItem.PerformClick();
    return true; // or false
    }
    }

我要实现的目标:

  1. WebBrowser 的快捷方式被禁用(我在某处读到 ActiveX 阻止了这一点......为什么?)。

  2. 我想要的是,除非当前正在 WebBrowser 中键入/导航,否则表单的快捷方式有效。焦点应该从 WebBrowser 获取,只要在控件外有点击,而不仅仅是当其他文本框处于焦点时(例如,当点击表单的空白处时)。

最佳答案

尝试从 WebBrowser 控件继承并覆盖 Control.IsInputKey .查看 Ctrl+N 是否到达那里。

关于c# - WebBrowser 'steals' 快捷键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17537351/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com