首页 > 解决方案 > 在 Windows 窗体中输入键盘输入 (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 方法。相反,如前所述,它只调用选定的按钮。顺便说一句,所有其他按钮都可以正常工作。

(希望我没有错过 StackOverflow 上的任何内容,否则抱歉)

标签: c#winformscalculatorkeyboard-events

解决方案


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

最后要更改标签顺序,因为Cais Jard说您有两个选项,一个是在文件Form1.designer.cs中,在初始化组件中,您拥有所有按钮等。然后您将它们像这样列出,this.buttonXX.TabIndex = 0;只需更改为您想要的。

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


推荐阅读