【问题标题】:C#: In the keydown event of a textbox, how do you detect currently pressed modifiers + keys?C#:在文本框的 keydown 事件中,如何检测当前按下的修饰符 + 键?
【发布时间】:2009-03-24 16:42:51
【问题描述】:

C#:在文本框的keydown事件中,如何检测当前按下的修饰符+键?

我做了以下操作,但我对这些运算符不太熟悉,所以我不确定我是否以及我做错了什么。

    private void txtShortcut_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.Modifiers == (Keys.Alt || Keys.Control || Keys.Shift))
        {
            lbLogger.Items.Add(e.Modifiers.ToString() + " + " +
                "show non-modifier key being pressed here");
        }
    }

1) 如何检查 e 是否包含任何修饰键?

【问题讨论】:

    标签: c#


    【解决方案1】:

    根据msdnlinkt

    private void txtShortcut_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Alt || e.Control || e.Shift))
            {
                lbLogger.Items.Add(e.ToString() + " + " +
                    "show non-modifier key being pressed here");
            }
        }
    

    【讨论】:

      【解决方案2】:

      documentation 表示它是按位组合,但您正在执行逻辑或。

      试试:

      if (e.Modifiers & (Keys.Alt | Keys.Control | Keys.Shift))
      {
          lbLogger.Items.Add(e.Modifiers.ToString() + " + " +
              "show non-modifier key being pressed here");
      }
      

      我认为您可以使用 e.KeyCode.ToString() 获取实际密钥。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-02-02
        • 2012-10-11
        • 1970-01-01
        • 2021-12-17
        • 2010-10-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多