【问题标题】:Remove highlight on button删除按钮上的突出显示
【发布时间】:2016-12-08 13:37:03
【问题描述】:

如图所示:

我想在每次点击后移除高亮,因为我已将 acceptbutton 和 ActiveControl 设置为该程序的“equal”按钮 当我在键盘上按下 Enter 时,我希望进行 AcceptButton 的操作,而不是输入突出显示的按钮文本。任何想法? 谢谢。

【问题讨论】:

  • 到目前为止的代码? SO 不是代码编写服务。
  • @techydesigner 你的代码是什么意思?我创建了这个程序,只是想知道有什么方法可以去掉高亮
  • 代码中肯定有一些东西会影响它。这可能是一个小故障,但至少某些特定于按钮的代码可能对其他用户有所帮助。
  • @techydesigner 通过问题“有什么想法吗?”我猜OP 是在征求意见,而不是作为服务编写代码。这个问题不需要以任何方式明确的代码。
  • 创建一个从Button 派生的自定义按钮,并使其在构造函​​数中不可选择:this.SetStyle(ControlStyles.Selectable, false); Like this post

标签: c# .net winforms


【解决方案1】:

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


解决方法如下:

发生的情况是按钮接受了输入焦点 被点击,就像您点击它时任何其他控件一样。

以及Windows指示控件具有输入焦点的方式 (至少在 Aero 主题下)带有微妙的蓝色高光。

特别是对于按钮控件,当它具有输入焦点时, 只需按 Enter 键即可“按下”该按钮。 这就是为什么保持高光是非常重要的,这样 用户知道会发生什么。

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

可以完全阻止按钮获得焦点 通过将其Focusable property 设置为 false,但我会非常 强烈建议不要这样做。完成此操作后,将没有 用户仅使用键盘“按下”按钮的方式。 精心设计的应用程序应该始终可供以下用户访问: 要么不喜欢,要么无法使用鼠标。

【讨论】:

    【解决方案2】:

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

    谷歌“winforms control set focus”获取代码详情。

    这将保留可访问性:仅使用键盘的用户可以Tab 到所需的按钮,按Enter 以“单击”按钮。然后,您的单击处理程序会将焦点放在 = 上,因此很明显 another Enter 将执行 = 操作.

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

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

    【讨论】:

      猜你喜欢
      • 2020-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多