C#检测何时按下键并触发按钮
C# Detect when key gets pressed and trigger a button
所以我正在尝试制作一个简单的计算器。用户只能通过表单上的按钮或小键盘输入数字。这是我的代码:
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
string key = "";
switch (e.KeyCode)
{
case (Keys.NumPad1):
key = "1";
break;
case (Keys.NumPad2):
key = "2";
break;
default:
break;
}
txt_string.Text = txt_string.Text + key;
}
如果我在 KeyDown
函数上设置断点并按下数字小键盘键(和所有其他键),程序甚至不会到达该断点。
我是否必须更改表单上的某些内容才能检测到密钥?
您需要将 KeyPreview 设置为 true(表单上的 属性)。另外,我建议不要尝试调试行为 - 因为你可能会影响你正在测试的行为(Debug.WriteLine())是你的朋友。
只是要指出许多键盘没有小键盘。您可以检查密钥是否为整数。
void Form1_KeyDown(object sender, KeyPressEventArgs e)
{
if (char.IsDigit(e.KeyChar))
{
txt_string.Text += e.KeyChar;
}
}
虽然这更像是代码审查而不是解决方案。
所以我正在尝试制作一个简单的计算器。用户只能通过表单上的按钮或小键盘输入数字。这是我的代码:
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
string key = "";
switch (e.KeyCode)
{
case (Keys.NumPad1):
key = "1";
break;
case (Keys.NumPad2):
key = "2";
break;
default:
break;
}
txt_string.Text = txt_string.Text + key;
}
如果我在 KeyDown
函数上设置断点并按下数字小键盘键(和所有其他键),程序甚至不会到达该断点。
我是否必须更改表单上的某些内容才能检测到密钥?
您需要将 KeyPreview 设置为 true(表单上的 属性)。另外,我建议不要尝试调试行为 - 因为你可能会影响你正在测试的行为(Debug.WriteLine())是你的朋友。
只是要指出许多键盘没有小键盘。您可以检查密钥是否为整数。
void Form1_KeyDown(object sender, KeyPressEventArgs e)
{
if (char.IsDigit(e.KeyChar))
{
txt_string.Text += e.KeyChar;
}
}
虽然这更像是代码审查而不是解决方案。