【问题标题】:Numpad key codes in C#C#中的数字键盘键代码
【发布时间】:2021-05-26 04:47:34
【问题描述】:

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

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

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

提前致谢

【问题讨论】:

  • 哎呀,很抱歉投票接近,我在投票后发现了这个问题。
  • 能不能写一个有文本框和按键事件的app,打印出e.KeyCode的值?这将准确地告诉您所需的值。

标签: c# winforms


【解决方案1】:

查看整个 Keys enum 。你有Keys.MutiplyKeys.Add等等。

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

【讨论】:

  • 此外,唯一没有表示的小键盘键是Enter 键。请参阅此处了解如何解决此问题:stackoverflow.com/questions/5989380/…
  • 谢谢。什么是“.”、“-”?
  • - 是 Keys.Minus。我不知道那个点是什么。也许是 Keys.Separator?
  • Keys.OemMinus 但不能使用 - 它位于小键盘旁边。我们应该按 Shift + DASH 来工作。 Keys.Sperator 不适用于“。”
  • Keys.OemMinus 是退格附近的“常规”减号键。 Keys.Subtract 是数字键盘的减号键。
【解决方案2】:

对于 "+" 、 "*" 、 "/" ,我们可以使用 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 '-'");
        }
    }

【讨论】:

    【解决方案3】:

    我使用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() 来解决。

    【讨论】:

      【解决方案4】:

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多