在 Windows 窗体中输入键盘输入 (C#)

Enter keyboard input in Windows Form (C#)

我制作了一个计算器,唯一剩下要做的就是让它通过键盘输入工作。在我进入 Enter KeyDown 之前,一切都完美无缺。问题是,当我启动我的计算器时,一个左上角的按钮被选中,如果我按下 Enter,它将改为调用该特定按钮(编号 7)的方法。看起来如果我点击任何按钮,它就会被选中,如果我按 Enter 也会发生同样的事情。

我尝试将我的表单设置为 acceptButton = "none" 和 "equal_btn"(我的等号按钮,我想在按 Enter 时使用它),但没有帮助

private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            switch (e.KeyCode)
            {
                case Keys.D0:
                    btn_zero.PerformClick();
                    /*PerformClick() because all methods are for buttons*/
                    break;
                case Keys.D1:
                    btn_one.PerformClick();
                    break;
                case Keys.D2:
                    btn_two.PerformClick();
                    break;
                /*......*/
                case Keys.Oemplus:
                    plus.PerformClick();
                    break;
                case Keys.Enter:
                    equal.PerformClick();
                    break;
            }
        }

我期望的是当我按下 Enter 时,将调用按钮 Equal 方法。相反,如前所述,它只调用选定的按钮。 顺便说一句,所有其他按钮都可以正常工作。

(希望我没有在 Whosebug 上遗漏任何内容,否则抱歉)

您可以在 Form1_Load 中将焦点更改为其他元素,例如,我假设您输入的是等号。你有计算器的地方。 像 btnEnter.Select(); 什么会阻止 运行 按钮中的那个方法。

最后更改 Tab 键顺序,因为 Cais Jard 说你有两个选择,一个在文件 Form1.designer.cs 中,在初始化组件中你有所有按钮等等 然后你有他们这样列出 this.buttonXX.TabIndex = 0; 只需更改为你想要的。

另一个更改 tabindex 的选项是在元素的属性中。基本上,转到设计器,单击元素并在子菜单 behavior 中按 F4 您可以选择 tabindex