【发布时间】:2021-02-23 17:03:40
【问题描述】:
我在 c# Winform 上做了一个计算器,它有用于输入数值的按钮。我希望通过键盘按键执行按钮单击操作。就像我在键盘上按“1”一样,它会处理“button1”的点击操作。
我试过了
private void Form1_Load(object sender, EventArgs e)
{
this.KeyPreview = true;
}
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.Control && e.KeyCode == Keys.NumPad0)
{
button1.PerformClick();
}
}
但这对我的程序没有影响。
【问题讨论】:
-
你为什么要测试
e.Control? -
删除
e.Control。 Keys.NumPadX 值是连续的,这意味着您可以通过从KeyCode中减去NumPad0来获得数值,前提是它介于NumPad0和NumPad9之间,例如:if (e.KeyCode>=Keys.NumPad0 && e.KeyCode<=Keys.NumPad9){ var number=e.KeyCode-Keys.NumPad0;} -
KeyDown 的表单事件属性中没有选择 keydown 函数,这就是它不起作用的原因。现在很好,但我仍然无法将 ENTER 键分配给我的“相等”按钮。我曾尝试使用表单 acceptbutton 和 keys.enter 但它们不起作用。