按钮自动选中(如何关闭?)

3

我有一个WinForm窗体,当你加载窗体时,会默认选择某个按钮。所谓的选择,就是如果按下“Enter”键,该按钮就会被按下。

我该如何改变我的按钮,使它们不再这样做?


不是“某些按钮”..而是“某个按钮”。 :) - Nayan
4个回答

3

您的选项卡顺序是按照在表单上添加控件的顺序设置的。如果第一个可以按/选择/编辑的控件是被按下的按钮,则当表单加载时,焦点将自动放在它上面。

您可以通过将焦点设置到其他控件(可能不可见?!提示*提示!)来欺骗以避免首先选择该按钮。

但也要确保该按钮不是表单的AcceptButton。


更改 TabIndex 并不能解决我的问题,我将尝试手动设置焦点,谢谢! - sooprise
TabIndex 是一个比较复杂的事情。如果您尝试在属性中手动编辑它,即使这样也不能保证它应该按照那种方式工作。最好的方法是在 Visual Studio 的“编辑”菜单中启用“Tab Order”,然后按照您想要控件的顺序开始单击。 - Nayan

2

Nayan和rerun提到了两个概念:

1) AcceptButton 2) Tab order

还有一个我要补充,并尝试解释这三个概念之间的关系:

3) 焦点

焦点意味着子控件具有“键盘焦点”。当控件具有焦点时,它可以接收键盘输入并对其做出响应。通过使用鼠标单击控件或使用Tab键来更改焦点。

Tab顺序是按照控件接收焦点的顺序排列的。它还决定了最初获得焦点的控件(Tab顺序中的第一个控件)。

AcceptButton的概念有点混合。如果将窗体的AcceptButton属性设置为按钮控件,则当用户在不处理回车键的任何控件上具有焦点时,按下Enter键时会按下该按钮。通常,“确定”按钮被设置为AcceptButton,以便用户可以输入数据并按Enter作为按下“确定”按钮的快捷方式。


呵呵,我也提到了 Focus =)) - Nayan
你知道的,我的本意是将它们与每个控件的选定外观联系起来,但我完全没有完成。既然楼主似乎已经发布了自己的答案,我就不再费力去完成它了。 - Tergiver

1

AcceptButton被设置为(无),还有其他可能导致这种情况的原因吗? - sooprise
你在使用任何组合或第三方控件吗? - rerun
我正在使用Visual Studio从头开始构建WinForms。是的,有点奇怪,如果我设置AcceptButton,我可以在编辑器中看到它被设置了(按钮被选中),当我将其设置回“无”时,没有任何按钮被选中,但当我运行程序时,它们不应该被选中的按钮被选中了... - sooprise

1

Element.Select()是我用过的有效方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接