c# - 在 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 上的任何内容,否则抱歉)
解决方案
您可以做的是Form1_Load
将焦点更改为其他元素,例如,我假设等号将是您的输入。你有计算器的地方。就像btnEnter.Select();
什么会阻止在按钮中运行该方法。
最后要更改标签顺序,因为Cais Jard说您有两个选项,一个是在文件Form1.designer.cs
中,在初始化组件中,您拥有所有按钮等。然后您将它们像这样列出,this.buttonXX.TabIndex = 0;
只需更改为您想要的。
更改的另一个选项tabindex
是元素的属性。基本上,转到设计器,单击元素并F4
在子菜单内按behavior
您可以选择tabindex
推荐阅读
- parsing - 在 ffprobe 中解析统计信息
- c - 有人可以解释一下这个while循环是什么意思吗?
- javascript - 如何从特定来源渲染文章并防止意外请求过多?
- java - 是否有可能在运行时向 GraphQL 的响应中添加额外的模式字段?
- spring-boot - 无法从 spring-boot-starter-data-neo4j 连接到云托管的 neo4j 服务器
- python - 使用 Pycharm 连续重复的代码行
- reactjs - React Hooks / 不必要的组件渲染
- r - 如何针对第一列绘制数据框的 2 到 N 列?
- google-apps-script - 表格 IF 功能设置和/或格式错误
- django - Django管理面板中特定字段的权限