【问题标题】:WinForm button keeps focusWinForm 按钮保持焦点
【发布时间】:2011-04-22 01:54:26
【问题描述】:

我有一个带有几个按钮的 winform,当我点击一个按钮时,它会运行 Click 事件处理程序,然后按钮保持选中状态,所以如果我按下键盘上的 ENTER 键,它将运行 Click 事件处理程序再次为该按钮。

我猜这是按钮的默认行为(单击时保持选中状态),但我找不到删除该行为的方法。

我为另一个控件尝试了Focus()Select() 的方法,但按钮仍然处于选中/聚焦/活动状态

有什么帮助吗?

【问题讨论】:

  • 您无法禁用此行为是有原因的。它是标准,用户期望。如果您删除它和/或禁用 Enter 键,您的用户会讨厌您并认为您无能。如果您认为您需要删除它和/或禁用 Enter,您的 UI 设计存在严重缺陷。 在为时已晚之前重新考虑您的设计。不要乱用预期的标准 UI 行为。
  • 我问的原因是因为我的客户要求这种行为。我说清楚了:这是默认行为,但我想知道是否可以更改!无论如何,谢谢

标签: c# .net winforms visual-studio-2008 c#-2.0


【解决方案1】:

如果您不希望用户在事件仍在运行时按回车键并再次触发事件,您可以在运行处理程序代码时禁用该按钮(使用 finally 以防出现问题)

编辑:

private void btnOk_Click(object sender, EventArgs e)
{
    btnOk.Enable = false;
    try
    {
        // do stuff
    }
    finally
    {
        btnOk.Enable = true;
    }
}

【讨论】:

  • 我无法禁用该按钮,因为用户应该能够使用该按钮单击它。我也不能禁用 ENTER 键(它用于其他事情)
  • 我的意思是在处理的事件上禁用它......这应该是你应该做的第一件事,然后当然再次启用它
猜你喜欢
  • 1970-01-01
  • 2019-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-13
  • 2021-05-21
相关资源
最近更新 更多