2010-10-06 100 views
0

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

我想这是一个按钮的默认行为(保持它被点击时选中),但我找不到一种方法来删除该行为。

我尝试了另一种控制方法Focus()Select(),但按钮​​仍处于选中/聚焦/主动

任何帮助吗?

+1

有一个原因,您不能禁用此行为。它是*标准*和用户*期望*它。如果你删除这个和/或禁用回车键,你的用户会恨你并认为你无能。如果你认为你需要*删除这个和/或禁用回车,*你的UI设计存在严重的缺陷。*在你太晚之前重新考虑你的设计。不要混淆预期的标准用户界面行为。 – Timwi 2010-10-06 22:14:33

+0

我问的原因是因为我的客户正在请求这种行为。我明确表示:这是默认的行为,但我想知道是否可以改变!,无论如何,谢谢 – Osvier 2010-10-07 00:42:51

回答

2

如果您鸵鸟政策希望用户再次按下回车键触发事件,而它仍然在运行,你可以禁用按钮,同时运行的处理程序代码(与最终在一些情况下弄乱)

编辑:

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

我无法禁用按钮,因为用户应该可以用按钮点击它。我也无法禁用ENTER键(它用于其他的事情) – Osvier 2010-10-06 21:39:55

+0

我的意思是禁用它处理事件...应该是你应该做的第一件事,然后再次启用它backa当然 – sebagomez 2010-10-06 21:42:24

+0

谢谢你! :) – Osvier 2010-10-07 00:43:11