【问题标题】:Is there any way to assign a keyboard button to control in c#?有没有办法在c#中分配一个键盘按钮来控制?
【发布时间】:2021-02-23 17:03:40
【问题描述】:

我在 c# Winform 上做了一个计算器,它有用于输入数值的按钮。我希望通过键盘按键执行按钮单击操作。就像我在键盘上按“1”一样,它会处理“button1”的点击操作。

我试过了

        private void Form1_Load(object sender, EventArgs e)
        {
            this.KeyPreview = true;
        }
        private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Control && e.KeyCode == Keys.NumPad0)
            {
               button1.PerformClick();
            }
        }

但这对我的程序没有影响。

【问题讨论】:

  • 你为什么要测试e.Control
  • 删除e.ControlKeys.NumPadX 值是连续的,这意味着您可以通过从 KeyCode 中减去 NumPad0 来获得数值,前提是它介于 NumPad0NumPad9 之间,例如:if (e.KeyCode>=Keys.NumPad0 && e.KeyCode<=Keys.NumPad9){ var number=e.KeyCode-Keys.NumPad0;}
  • KeyDown 的表单事件属性中没有选择 keydown 函数,这就是它不起作用的原因。现在很好,但我仍然无法将 ENTER 键分配给我的“相等”按钮。我曾尝试使用表单 acceptbutton 和 keys.enter 但它们不起作用。

标签: c# winforms


【解决方案1】:

请试试这个

    private void Form1_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.NumPad1)
        {
           button1.PerformClick();
        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-21
    • 1970-01-01
    • 1970-01-01
    • 2020-10-20
    • 2023-03-10
    • 1970-01-01
    • 2021-01-25
    • 2021-07-29
    相关资源
    最近更新 更多