C# winform中keyDown事件用法
阿新 • • 發佈:2019-01-10
1、在form中新增KeyDown事件,如下圖
2.、在事件中加入需要實現的方法,可以根據鍵值來區別按下哪個鍵需要執行什麼事件。如下例項原始碼:
private void Login_KeyDown(object sender, KeyEventArgs e) { switch(e.KeyValue) { case 13: //鍵值(Enter鍵為例) Loging(); //要實現的東西 break; default: break; } }
3、測試事件是否成功。如果按下按鍵不會觸發窗體的KeyDown事件,也沒有呼叫KeyDown事件的處理程式。
原因:由於窗體中添加了控制元件,於是焦點就在其中一個控制元件上,如果我們要處理的事件窗體和獲取焦點的控制元件都同時擁有,系統就會將鍵盤的操作鍵值直接傳遞給這個獲取焦點的控制元件。,就會出現上面這個問題。
解決方案:此時需要將窗體的KeyPreview屬性設定為true(如下圖所示:),將系統傳入的鍵值先傳遞給窗體,再傳遞給控制元件。MSDN關於KeyPreview的說明:如果窗體將接收所有鍵事件,則為 true;如果窗體上當前選定控制元件接收鍵事件,則為 false。預設為 false。