删除按钮上的突出显示

时间:2016-08-03 02:15:45

标签: c# .net winforms

如图所示:

https://drive.google.com/file/d/0B4XV2HrbrpDZX0xnZ1o1SHhiWm8/view?usp=drivesdk

我想在每次点击后删除突出显示,因为我已将acceptbutton和ActiveControl设置为此程序的“相等”按钮 我希望在键盘上按 Enter 键时,不会输入突出显示的按钮文本,而是输入AcceptButton。任何的想法? 感谢。

2 个答案:

答案 0 :(得分:0)

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

重复

以下是解决方案:

  

按钮接受输入焦点后会发生什么   被点击,就像你点击它时任何其他控件一样。

     

Windows指示控件具有输入焦点的方式   (至少在Aero主题下)是一个微妙的蓝色亮点。

     

特别是对于按钮控件,当它具有输入焦点时,   只需按 Enter 键即可#34;推送"那个按钮。   这就是为什么保持亮点是非常重要的,所以   用户知道会发生什么。

     

更好的解决方案是将焦点设置为您的不同控件   用户单击按钮后立即显示窗口。那样,   它将不再自动突出显示,也不会执行任何操作   当用户按下 Enter 时自动触发   键。 (这是您正在尝试的真正的可用性问题   解决,即使你还不知道。没有什么比一个更令人困惑   用户实际尝试时无意中点击了按钮   输入内容。)

     

可以阻止该按钮完全获得焦点   通过将其Focusable property设置为false,但我会非常   非常推荐这个。一旦你完成了这个,就没有了   用户按"按"按钮仅使用键盘。   精心设计的应用程序应始终始终可供用户访问   或者不喜欢或不能使用鼠标。

答案 1 :(得分:0)

鉴于您“希望{{1}}的操作发生,而不是在键盘上按 Enter 键时输入突出显示的按钮文本。”, 一个解决方案是让每个按钮的click处理程序将焦点放在 = 上。

Google“winforms control set focus”代码详情。

这将保留辅助功能:仅限键盘的用户可以 Tab 到所需的按钮,按 Enter “点击”按钮。然后,您的点击处理程序将焦点放在 = 上,因此很明显另一个 Enter 将执行 = 操作

它还向任何用户明确表示他们可以随时按 Enter ,以获取 =

另一方面,用户经常看到 = 突出显示可能会“令人不安”。需要用户测试......