繁体   English   中英

C#中的数字键代码

[英]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.MutiplyKeys.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM