[英]Numpad key codes in C#
我使用以下这些代码来处理小键盘键。
if (e.KeyCode == Keys.NumPad0 || e.KeyCode == Keys.D0)
{
MessageBox.Show("You have pressed numpad0");
}
if (e.KeyCode == Keys.NumPad1 || e.KeyCode == Keys.D1)
{
MessageBox.Show("You have pressed numpad1");
}
以及其他数字键盘键。 但我想知道如何处理 "+" 、 "*" 、 "/" 、 " -" 、 " . " ,它们位于小键盘键旁边。
提前致谢
查看整个Keys
枚举。 您有Keys.Mutiply
、 Keys.Add
等。
请注意, Keys.D0
不是数字键盘 0,而是非数字键盘 0。
对于 "+" 、 "*" 、 "/" ,我们可以使用 KeyDown 事件,对于 "-" 、 "." ,我们可以使用 KeyDown 事件。 我们可以使用 KeyPress 事件。
以下是代码:
private void button1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Add)
{
MessageBox.Show("You have Pressed '+'");
}
else if (e.KeyCode == Keys.Divide)
{
MessageBox.Show("You have Pressed '/'");
}
else if (e.KeyCode == Keys.Multiply)
{
MessageBox.Show("You have Pressed '*'");
}
}
private void button1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == '.')
{
MessageBox.Show("You have pressed '.'");
}
else if (e.KeyChar == '-')
{
MessageBox.Show("You have pressed '-'");
}
}
我使用switch
来完成我的工作。
我正在制作一个计算器,甚至在目标文本框上也创建了一个 KeyDown。 然后我使用了:
switch (e.KeyCode)
{
case Keys.NumPad1:
tbxDisplay.Text = tbxDisplay.Text + "1";
break;
case Keys.NumPad2:
tbxDisplay.Text = tbxDisplay.Text + "2";
break;
case Keys.NumPad3:
tbxDisplay.Text = tbxDisplay.Text + "3";
break;
}
等等。
另一件要考虑的事情是,如果用户然后单击屏幕上的按钮,焦点将从文本框中丢失并且键条目将不再起作用。 但这很容易通过按钮上的 .focus() 修复。
有一种简单的方法可以在不查看手册的情况下学习所有键码。
创建一个表单,然后转到表单的 KeyDown 事件然后添加这个
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
MessageBox.Show(e.KeyCode.ToString());
}
然后你会得到你在键盘上按下的任意键的名称
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.