Winforms按下键

时间:2014-04-01 14:17:55

标签: c# winforms keypress

我有一个带有一些标签和两个按钮的表单,按钮是是和否。

出于某种原因,我无法确定用户是否在表单上按了y或n键。如果我对文本框使用相同的事件,例如它可以正常工作。

private void Form2_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Y)
            {
                btnYes.PerformClick();
            }
        }

似乎该事件永远不会发生。 那是为什么?

1 个答案:

答案 0 :(得分:2)

解决方案1:您需要将表单的KeyPreview属性设置为true

试试这个:

this.KeyPreview = true;

解决方案2:但我建议您覆盖ProcessCmdKey()方法,如下所示

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) {
  if (keyData == Keys.Y) {
   btnYes.PerformClick();
    return true;
  }
  return base.ProcessCmdKey(ref msg, keyData);
}