【问题标题】:Enter keyboard input in Windows Form (C#)在 Windows 窗体中输入键盘输入 (C#)
【发布时间】:2019-09-28 17:36:05
【问题描述】:

我做了一个计算器,剩下要做的就是让它通过键盘输入工作。在我进入 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 上的任何内容,否则很抱歉)

【问题讨论】:

  • 首先,设置您的 Tab 键顺序,以便计算器的包含数字的文本框在 Tab 键顺序中排在第一位,然后在每个按钮的 GotFocus 事件上放置一个事件处理程序,并使其处理程序转移焦点回到文本框
  • 请问如何更改标签顺序?

标签: c# winforms calculator keyboard-events


【解决方案1】:

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

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

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

【讨论】:

  • 它在开始时工作,但是当我使用鼠标单击任何其他按钮时,它会选择该按钮,然后它又被破坏了。也许我对 tabindex 不了解,我不确定这是做什么的。我现在所有的按钮都在 tabindex 为零。
  • 您的问题是没有预选按钮?只需尝试默认更改该预选按钮即可。这就是tabindex=0 所做的
  • 对不起,我不清楚。预选按钮有效,当我启动程序时选择了 Equal_btn。问题是当我开始使用鼠标时。当我单击任何按钮(我们说 7)时,它将被选中,当我用键盘按 Enter 时,它将调用所选按钮的方法(换句话说,它将打印出 7)
  • 好吧,我通过调用 equal_btn.Select(); 修复了它。在每个按钮方法之后。非常感谢你们!
  • Video tut: youtube.com/watch?time_continue=107&v=_5nYAwOUe1I - 选项卡顺序不会改变您的应用程序的焦点行为,它只是设置在您选项卡选项卡选项卡时激活控件的顺序(您会看到突出显示从按钮移动到按钮).. 具有最低标签索引的控件是窗体打开时默认获得焦点的控件
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-25
  • 2018-10-23
  • 2014-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-27
相关资源
最近更新 更多