【问题标题】:Handle the KeyDown Event when ALT+KEY is Pressed按下 ALT+KEY 时处理 KeyDown 事件
【发布时间】:2011-01-09 22:59:15
【问题描述】:

当 ALT 键与 .NET 中的另一个键同时按下时,您如何处理 KeyDown 事件?

【问题讨论】:

    标签: c# winforms keyboard user-input


    【解决方案1】:

    KeyEventArgs 类为键修饰符定义了几个属性 - Alt 是其中之一,如果按下 alt 键,则计算结果为 true

    【讨论】:

    • 这个链接给了我这个想法。谢谢
    【解决方案2】:
    private void Form1_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.Alt && e.KeyData != (Keys.RButton | Keys.ShiftKey | Keys.Alt))
        {
            // ...
        }
    }
    

    【讨论】:

      【解决方案3】:

      类似:

         private void Form1_KeyDown(object sender, KeyEventArgs e)
         {
              if (e.Alt)
              {
                  e.Handled = true;
                  // ,,,
              }
          }
      

      【讨论】:

      • 问题是我只得到了 Alt 键而不是 ALT 键
      • @Jedi,你应该为两者获得(单独的)事件。
      【解决方案4】:

      这是最终有效的代码

      if (e.KeyCode >= Keys.A && e.KeyCode <= Keys.Z &&  e.Alt){
           //Do SomeThing
      }
      

      【讨论】:

      • 您的西班牙和法国用户会喜欢这样吗?
      • 非英语语言中的特殊字符(例如ê)是否位于键码A-Z之间?我认为答案是否定的,但不确定。很抱歉撞了一个旧帖子,但我偶然发现了它。
      • 你是说英国人不使用数字和标点符号?说真的,这个答案是不正确的——几乎所有其他的都是。
      【解决方案5】:

      我捕获了 alt 和向下或向上箭头键来增加 numericUpDown 控件的值。 (我使用 alt 键 + 向下/向上键,因为此表单也有一个 datagridview,我希望向下/向上键在该控件上正常操作。)

          private void frmAlzCalEdit_KeyDown(object sender, KeyEventArgs e)
          {
              if (e.Alt && e.KeyCode == Keys.Down)
              {
                  if (nudAlz.Value > nudAlz.Minimum) nudAlz.Value--;
      
              }
              if (e.Alt && e.KeyCode == Keys.Up)
              {
                  if (nudAlz.Value < nudAlz.Maximum) nudAlz.Value++;
              }
      
          }
      

      【讨论】:

        【解决方案6】:

        为您的表单创建一个 KeyUp 事件或像我一样使用库来获取 GlobalHook,以便您可以在表单外按这些键。

        例子:

         private void m_KeyboardHooks_KeyUp(object sender, KeyEventArgs e)
                        {
                            if ( e.KeyCode == Keys.Alt || e.KeyCode == Keys.X)
                            {     
        
        
                            }
                        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-05-14
          • 1970-01-01
          • 1970-01-01
          • 2022-09-26
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多