winforms 移除按钮上的突出显示

vptzau2j  于 2023-06-24  发布在  其他
关注(0)|答案(3)|浏览(94)

如图所示:

我想在每次单击后删除高亮显示,因为我已将acceptbutton和ActiveControl设置为此程序的“equal”按钮。我希望在按键盘上的Enter键时,AcceptButton的操作发生,而不是输入高亮显示的按钮文本。你知道吗?谢谢。

sc4hvdpw

sc4hvdpw1#

我认为这个问题是How do I prevent WPF buttons from remaining highlighted after being clicked?的重复

解决方案如下:

发生的情况是,按钮在被单击后接受 * 输入焦点 *,就像您单击任何其他控件时所做的那样。
Windows指示控件具有输入焦点的方式(至少在Aero主题下)是用一个微妙的蓝色高亮显示。
特别是对于按钮控件,当它具有输入焦点时,只需按Enter键即可“推”该按钮。这就是为什么保持突出显示是非常重要的,这样用户就知道会发生什么。
更好的解决方案是在用户单击按钮后立即将焦点设置为窗口中的另一个控件。这样,当用户按下Enter键时,它将不再自动突出显示,也不会自动触发任何操作。(这是你试图解决的真实的的可用性问题,即使你还不知道。没有什么比当用户实际上试图键入内容时无意中点击按钮更令人困惑的了。)
您可以通过将Focusable property设置为false来阻止按钮获得焦点,但我强烈建议不要这样做。一旦你这样做了,用户就没有办法只使用键盘“按下”按钮了。设计良好的应用程序应该 * 始终 * 对不喜欢或无法使用鼠标的用户是可访问的。

vlf7wbxs

vlf7wbxs2#

假设您“* 希望AcceptButton的操作发生,而不是在我按下键盘上的Enter键时输入突出显示的按钮文本。*”,一种解决方案是让每个按钮的单击处理程序将焦点放在=上。
Google“winforms control set focus”获取代码细节。
这将保留 * 可访问性 *:只有键盘的用户可以Tab到所需的按钮,按Enter键“单击”按钮。你的click处理器会给予焦点放在=上,所以很明显 anotherEnter会执行=操作。
它还向 * 任何 * 用户清楚地表明,他们可以在任何时候按Enter来获取=。
另一方面,不断地看到=被突出显示可能会让用户“不安”。需要用户测试…

jjjwad0x

jjjwad0x3#

您可以将按钮更改为扁平:

btn.FlatStyle = FlatStyle.Flat;

然后更改FlatAppearance:

btn.FlatAppearance.MouseDownBackColor = Color.Transparent;
btn.FlatAppearance.MouseOverBackColor = Color.Transparent;

相关问题