Winforms被按下键

本文关键字:Winforms | 更新日期: 2023-09-27 17:56:11

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

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

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

似乎该事件永远不会触发。为什么?

Winforms被按下键

解决方案 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);
}