【问题标题】:Keyboard Shortcut - Simultaneous pressing Alt-Ctrl-Shift-D failes键盘快捷键 - 同时按下 Alt-Ctrl-Shift-D 失败
【发布时间】:2020-10-30 23:27:48
【问题描述】:

我正在使用一个实现,它对同时按下键 Ctrl + Alt + Shift + D 做出反应同时超过2个月从来没有任何问题。两天前,我体验到这条捷径不再起作用(在发布的版本上也不起作用,这肯定是个问题!)。 => 重新启动 PC 最终完成了它的工作,它再次工作......好吧......也许(并且希望)是一个自发的 Windows 问题。

做梦吧,今天又是同样的问题,这次重启并没有解决。所以让我们来处理它。

这是我的实现:

private void MainWindow_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.D
        && e.Control == true
        && e.Alt == true
        && e.Shift == true)
    {
        // do things
    }
}

正如我上面提到的,它在经常使用之前工作可靠。

到目前为止我发现的是,按下键 Ctrl + Alt + Shift 的“MainWindow_KeyDown”功能是每次都按预期调用。按下 D 也不再触发此函数,这是出乎意料的(仅按下 D 时会调用此函数。

删除“选项”键之一似乎有效(例如 Ctrl + Alt + D)。但是一旦我按下了所有三个选项键(即 Ctrl + Alt + Shift),它不会对按下的其他键做出反应。

当 Ctrl + Alt 时,为什么函数“MainWindow_KeyDown”对 D(或任何其他)没有反应(“不再”) + Shift 已经按下了吗?

q&d 解决方法是替换

e.KeyCode == Key.D

通过

Keyboard.IsKeyDown(Key.D) == true

只要 D 不是最后一次按下的键,它就可以工作(因为如上所述,当按下 Ctrl 键时它不会进入此功能+ Alt + Shift 已经)。

我也尝试了以下实现,但结果相同(否定):

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
    if (keyData == (Keys.Control | Keys.Alt | Keys.Shift | Keys.D))
    {
        MessageBox.Show("Short cut found");
        return true;
}
    return base.ProcessCmdKey(ref msg, keyData);
}

有没有遇到过类似情况的人? 非常感谢您的任何意见。

【问题讨论】:

  • 如果Form.KeyPreview 设置为true,则第一个sn-p 可以工作,ProcessCmdKey 在任何情况下都可以工作 (if (keyData.HasFlag(Keys.Control | Keys.Alt | Keys.Shift | Keys.D)) { ... }),即使控件使用具有类似键的加速器.
  • 如前所述,它的工作原理如上所述(它仍然可以在我的同伴电脑上工作。这让我再次相信这是联想X1 键盘驱动程序问题或类似问题)。 “Form.KeyPreview”没有改变它的行为。谢谢您的意见!
  • 我有一个客户端,其 MS Word 宏分配给 Alt+Ctrl+Shift+D。这条捷径已经运行多年,没有遇到任何问题。突然间,客户告诉我这个快捷方式在他们的一台电脑上不起作用。我查看了 PC,快捷方式分配仍然存在,但按下组合键没有任何作用。尝试 Alt+Ctrl+Shift 与各种随机字母都注册 - 除了 F。也许最近的一些 Windows 更新以某种方式破坏了这两个组合键的工作? PC 是戴尔 Optiplex 3050 micro。
  • 更新:我测试了其他几台 PC,使用 MS Word 自定义键盘屏幕查看它是否识别 Alt+Ctrl+Shift+D 快捷键组合。我试过的所有 Win10 电脑都不工作。我有一台 Win7 开发 PC,但它确实可以工作。 (这里有一些时髦的行为:我正在从 Win10 PC 进入 Win7 PC。当 RDP 全屏运行时它可以工作。当 RDP 处于窗口模式时,它不起作用。)所以我的理论是这种变化是由于最近的更新。

标签: c# winforms keyboard-shortcuts


【解决方案1】:

我遇到了同样的问题,以下 2 个步骤对我有用:

  1. 进入设备管理器 -> 键盘 -> 右键单击​​键盘 -> 卸载设备 -> 重新启动计算机。
  2. 一些程序正在破坏这个特定的快捷方式,在我的研究中,我看到人们只需关闭 Microsoft Teams、Cortana 或 Skype 就可以工作。对我来说,退出 Skype 很有效。

【讨论】:

  • 我有一个键盘布局,它使用 CTRL+ALT+SHIFT+D 来写国家字符 Ď 并且 Skype 毁了它。
猜你喜欢
  • 2011-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-13
  • 2013-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多