【问题标题】:Detecting key-press in background in a Winforms project在 Winforms 项目的后台检测按键
【发布时间】:2017-02-22 20:35:43
【问题描述】:

我正在做一个类似游戏(winforms)的测验,我想介绍作弊或复活节彩蛋的功能。如果我面前有一个问题,并且当我按下一个密钥(例如:Ctrl 或其他键)时,一个标签会显示正确的答案。

如果有帮助,所有问题都将显示在同一个表单上。问题是我找不到一种简单有效的方法来检测背景上的键。

【问题讨论】:

  • 覆盖表单的 ProcessCmdKey 函数。
  • 你可以通过表单的KeyPreview属性和同一个表单的KeyDown事件得到你要搜索的内容
  • 将表单的 KeyPreview 属性设置为 true 并处理表单的 KeyDown / KeyPress 事件
  • “在后台”是什么意思?正如之前的 cmets 所说,如果应用程序获得焦点,则使用通常的键盘输入机制将起作用,但那句话让我觉得你想要不同于常规键盘输入的东西。

标签: c# winforms keypress ctrl


【解决方案1】:

你可以从ProcessCmdKeyoverdide

示例

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
        switch (keyData)
        {
            case Keys.F1:
                break;
            default:
                break;
        }

        return base.ProcessCmdKey(ref msg, keyData);
 }

【讨论】:

    【解决方案2】:

    好家伙!它正在工作

    让我把代码放在这里以备将来帮助:

        private void FormName_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.ControlKey)
            {
                MessageBox.Show("Test");
            }
        }
    

    【讨论】:

      猜你喜欢
      • 2023-03-03
      • 2016-05-08
      • 1970-01-01
      • 1970-01-01
      • 2012-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多