2014-11-06 30 views
0

當按下按鈕時,有沒有辦法省略對按鈕執行的動作?我已經從SO獲得了一些很好的輸入,並嘗試通過OnKeyPress或OnKeyDown捕捉事件 - 但我無法忽略Enter-action。我也喜歡禁用Tabstop屬性的想法,但只要我點擊按鈕,問題就會重新出現。當按下Enter按鈕時省略動作

當按下「隨便」按鍵(如a或z)時,OnKeyDown似乎只會觸發,但當Enter被按下時不會觸發。我怎樣才能檢測到它 - 當Enter被擊中時 - 按鈕本身?

+0

此按鈕是窗體的默認按鈕嗎? – kpull1 2014-11-06 09:13:32

+0

這是winforms默認按鈕,但包裝在一個新的類。 – 2014-11-06 09:16:38

+0

你想達到什麼目的? 'Button'是一個假設被點擊的控件,用鼠標或按Enter /空格鍵。 *忽略行動*聽起來像解決不確定的問題,那會是什麼問題? – Sinatr 2014-11-06 09:18:32

回答

0

好了,事實證明

當您按下ENTER [...]的點擊此按鈕的事件被觸發

讓我想起使用OnMouseUp(MouseEventArgs e)方法代替OnClick(EventArgs e)。我給了它一個鏡頭,它完全符合我的要求 - 再加上:它使我有機會排除所述問題的包裝按鈕,而不涉及我的應用程序中的任何其他控件(如Form.AcceptButton)。

感謝您的所有意見,這讓我從另一個角度思考問題!

0

您可以使用:if(e.KeyCode == Keys.Enter){}

1

當您按下ENTER非多場裏面有一個表格默認按鈕設置,該按鈕的click事件被觸發,如click,而不是keyeventkeypress,keyup,​​等)。

Form.AcceptButton

獲取或設置當用戶 按下回車鍵被點擊表格上的按鈕。

如果您不想要這種行爲(或者想阻止它),也許您應該將其作爲默認按鈕移除。 但是,如果你需要它是默認情況下只在某些情況下,你可以綁定/解除綁定編程它:

form1.AcceptButton = btnSave; 
form1.AcceptButton = null;