1 回答
TA贡献2011条经验 获得超2个赞
更新答案
由于您仍然有问题,您必须做的是删除以前的代码并使用以下代码。
//Have your form's KeyPress event like this, replace textBox1 with the name of your textbox
private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
switch (e.KeyChar)
{
case '0':
textBox1.Text += "0";
break;
case '1':
textBox1.Text += "1";
break;
case '2':
textBox1.Text += "2";
break;
case '3':
textBox1.Text += "3";
break;
case '4':
textBox1.Text += "4";
break;
case '5':
textBox1.Text += "5";
break;
case '6':
textBox1.Text += "6";
break;
case '7':
textBox1.Text += "7";
break;
case '8':
textBox1.Text += "8";
break;
case '9':
textBox1.Text += "9";
break;
case '.':
textBox1.Text += ".";
break;
}
e.Handled = true;
}
有这样的表单加载事件。
private void Form1_Load(object sender, EventArgs e)
{
this.KeyPreview = true;
}
旧答案
您需要做的是在您的表单上创建 KeyPress 事件,如下所示。
private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == '1')
{
btn1_Click(null, null);
}
else if (e.KeyChar == '2')
{
btn2_Click(null, null);
}
//Go write your code with else if.........
}
然后,当您想在窗体中的任何位置捕获 KeyPress 事件时,下面的代码会将上述 KeyPress 事件添加到窗体上的所有控件,以便您可以在窗体中的任何位置捕获 KeyPress 事件。
private void Form1_Load(object sender, EventArgs e)
{
foreach (Control ctrl in Controls)
{
ctrl.KeyPress += Form1_KeyPress;
}
}
正如@Rufus L 在他的回答中提到的,您可以只使用 KeyPreview 属性,该属性将在实际控件接收到以下代码之前捕获其他控件的 KeyPress 事件。
private void Form1_Load(object sender, EventArgs e)
{
this.KeyPreview = true;
}
- 1 回答
- 0 关注
- 150 浏览
添加回答
举报