【问题标题】:Test for 'Ctrl' keydown in C#在 C# 中测试“Ctrl”按键
【发布时间】:2009-07-17 14:15:06
【问题描述】:

如何在Windows Forms/C# 中测试 Ctrl

【问题讨论】:

    标签: c# winforms


    【解决方案1】:
    bool ctrl = ((Control.ModifierKeys & Keys.Control) == Keys.Control);
    

    【讨论】:

      【解决方案2】:

      如果您想在按键处理程序中检测,您可以查看修饰符属性:

      private void button1_KeyPress(object sender, 
                                    System.Windows.Forms.KeyPressEventArgs e) 
      {
         if ((Control.ModifierKeys & Keys.Control) == Keys.Control) 
         {
           MessageBox.Show("Pressed " + Keys.Control);
         }
      }
      

      实际上,看着它并看到它并没有使用e 参数,似乎只要您的“this”是从表单或控件派生的,那么您可以随时进行此调用,而不仅仅是在键盘事件处理程序。

      但是,如果您想确保按下组合,例如 Ctrl-A,则需要一些额外的逻辑。

      private void myKeyPress(object sender, 
                              System.Windows.Forms.KeyPressEventArgs e) 
      {
         if (((Control.ModifierKeys & Keys.Control) == Keys.Control) 
              && e.KeyChar == 'A')
         {
           SelectAll();
         }
      }
      

      【讨论】:

        【解决方案3】:

        为旧问题添加迟到的答案...

        其他答案读取控制键的当前状态。如果您想直接从传递的事件参数中读取控制标志(即事件发生时的情况),请使用KeyUpKeyDown 事件(不是KeyPress):

        private void HandleTextKeyDown(object sender, KeyEventArgs e)
        {
            if (e.Control && e.KeyCode == Keys.A)
            {
                ((TextBox)sender).SelectAll();
                e.Handled = true;
            }
        }
        

        【讨论】:

          猜你喜欢
          • 2011-06-09
          • 1970-01-01
          • 1970-01-01
          • 2014-09-27
          • 2018-02-16
          • 2011-03-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多