【问题标题】:How to detect Ctrl - Forward Slash in WinForm app如何在 WinForm 应用程序中检测 Ctrl - 正斜杠
【发布时间】:2009-09-04 18:45:47
【问题描述】:

下面是 Ctrl + F 的代码(来自另一个 SO 帖子)。但是如何检测 Ctrl + ForwardSlash 呢?或 Ctrl + / (注意:除法不起作用)

    protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
    {
        if (1 == 1) //keyData == (Keys.Control | Keys.F))
        {
            MessageBox.Show("What the Ctrl+F?");
            return true;
        }
        return base.ProcessCmdKey(ref msg, keyData);
    }

【问题讨论】:

  • Control 修饰符使它需要 Question 而不是 Divide - 至少在美国键盘上。

标签: c# .net winforms keyboard-shortcuts


【解决方案1】:

除法应该可以正常工作。

对于 Ctrl + \

if (keyData == (Keys.Control | Keys.OemPipe) )

对于 Ctrl + /

if (keyData == (Keys.Control | Keys.OemQuestion) )

由于某种原因(不知道为什么),当您捕获 Ctrl + 这些键时,它们会映射到“移位”键映射。


编辑:

找到这个或任何其他密钥的一个技巧。在该方法的任何行上设置断点,并在按下要捕获的键时查看keyData 值。我建议在不点击控制的情况下执行此操作。然后,您可以使用反射器获取 Keys 的所有特定值,并找到具有适当值的“键”。

【讨论】:

  • 对我不起作用。注意:我说的是/上面的输入或附近。不在数字键盘上(如果您在笔记本电脑上)。有什么简单的方法可以在消息框中捕获实际的关键代码,然后使用数字代码重写?
  • @Tyndall:我刚刚测试了这个。我的新答案会给你正确的答案。
  • 在我的键盘上,反斜杠在回车上方。
  • @recursive。它也在我的身上。
  • 对不起,我的意思是 / 在输入的下方和左侧?钥匙。想知道,为什么 / 映射到按 Ctrl 移动。似乎是一个错误。我玩这个更多。如果我无法在我公司的台式机和笔记本电脑(7 或 8 种型号)上实现可靠,则可能只让用户使用 F12
猜你喜欢
  • 2011-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-11
  • 1970-01-01
相关资源
最近更新 更多