對C#中鍵盤響應事件的理解。

來源:互聯網
上載者:User
   最近一直對鍵盤響應事件迷惑著,於是我經過數次實驗等出一下結論,不知道有沒有道理。
鍵盤的事件響應有 KeyDown, KeyPress, KeyUp,他們分別執行的順序為 KeyDown-> KeyPress-> KeyUp,其實我們按下一個鍵時, KeyDownKeyPress是都要發生的,而且兩個人看上去沒有什麼區別。但是其實兩者還是有實質的區別的。
例如在一個多行文字框裡面輸入字元,為什麼我們沒有定義一個鍵盤響應事件,但是鍵盤卻響應了,把字元輸入到了文字框呢?其實我覺得因為這個事件就是系統預設的一個訊息響應,它就是 KeyPress。如果你自己還給 KeyPress定義了自己的響應的話,那麼程式會先執行你定義的程式,然後完成系統要求的顯示字元事件的響應過程,但是如果你在自己定義 KeyPress事件如: private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)裡面增加語句: e.Handled=true;那麼系統要求的顯示字元響應過程就不會被執行,原因就是這個語句的意思就是這個訊息響應已經完成。但是如果你在 KeyDown, KeyUp裡面加這條語句,顯示字串等訊息還是會發生,這說明系統的顯示字串和 KeyDown, KeyUp是沒有關係的,而對於斷行符號和退格訊息響應則是由 KeyDown控制,增加那條語句則斷行符號換行不會執行,退格響應也不會執行。
綜上:要屏蔽鍵盤上的一個字元的輸入,可以在 KeyPress裡面進行增加語句,而要屏蔽斷行符號和退格則可以在 KeyDown裡面進行增加語句。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.