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();
}
}
似乎该事件永远不会触发。为什么?
解决方案 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);
}