6

我使用以下这些代码来处理数字键盘键。

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");
}

也适用于其他小键盘键。但我想知道如何在小键盘旁边的 "+" 、 "*" 、 "/" 、 " -" 、 " . " 中做到这一点。

提前致谢

4

4 回答 4

13

查看整个Keys枚举。你有Keys.Mutiply, Keys.Add, 等等。

请注意,这不是Keys.D0数字键盘 0,而是非数字键盘 0。

于 2012-05-16T21:04:14.610 回答
5

对于 "+" , "*" , "/" ,我们可以使用 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 '-'");
        }
    }
于 2012-08-11T07:33:09.227 回答
0

我曾经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() 来解决。

于 2012-12-18T02:03:56.787 回答
0

有一种简单的方法可以在不查看手册的情况下学习所有键码。

创建一个表单,然后转到表单的 KeyDown 事件,然后添加这个

private void Form1_KeyDown(object sender, KeyEventArgs e)
   {
      MessageBox.Show(e.KeyCode.ToString());
   }

然后你会得到你在键盘上按下的任何键的名称

于 2021-05-25T20:47:34.997 回答