为什么KeyDown事件没有捕获"控制"起伏?

时间:2014-06-05 10:54:20

标签: c# .net winforms controls keydown

private void Form1_KeyDown(object sender, KeyEventArgs e)
{
    switch (e.KeyCode)
    {
        case Keys.Up:
            this.Text = "up";
            break;

        case Keys.Down:
            this.Text = "down";
            break;

        case Keys.Left:
            this.Text = "<-";
            break;

        case Keys.Right:
            this.Text = "->";
            break;

        case Keys.Delete:
            this.Text = "delete";
            break;

        case Keys.Control:
            this.Text = "control";
            break;

        case Keys.Control | Keys.C:
            this.Text = "control + c";
            break;

        case Keys.Control | Keys.X:
            this.Text = "control + x";
            break;

        case Keys.Control | Keys.V:
            this.Text = "control + v";
            break;

        default:
            break;
    }
}

与保存控件相关的所有内容都不会显示在表单标题中... 这只是代码示例,而不是真正的项目。在实际项目中,我需要捕获Control + C / X / V印刷机来进行复制/粘贴操作。

1 个答案:

答案 0 :(得分:1)

试试这个解决方案:

case (e.Control && e.KeyCode == Keys.C)

编辑: 如果它不起作用,请在代码周围添加paranthesis:

case (Keys.Control | Keys.C):

编辑2: 这一个:

e.KeyData == (Keys.Control | Keys.V)

编辑3: 打开KeyData

switch (keyData) {
   // Control+ C
   case Keys.Control | Keys.C:
      // ...
      break;
   case Keys.Control | Keys.V:
      // ...
      break;
}