2010-10-06 98 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