首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> 關於C#

C# KeyDown 與 KeyUp 事件完整指南

     編輯:關於C#

按鍵事件流程

鍵盤按下並釋放過程中會依序觸發三個事件:
KeyDown → KeyPress → KeyUp

KeyDown 與 KeyUp 可捕捉特殊鍵(如 Ctrl、Shift、Alt、功能鍵)與組合鍵,僅在需取得按鍵詳細資訊時使用。

1. KeyDown 事件

首次按下某個鍵時觸發。

範例:偵測修飾鍵並顯示於表單標題

private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
    string G_str_Mode = "";
    string G_str_text = e.KeyCode + ":" + e.Modifiers + ":" + e.KeyData + ":(" + e.KeyValue + ")";
    if (e.Shift) G_str_Mode = "Shift 鍵被按下";
    if (e.Control) G_str_Mode = "Ctrl 鍵被按下";
    if (e.Alt) G_str_Mode = "Alt 鍵被按下";
    this.Text = G_str_text + G_str_Mode;
}

KeyEventArgs 主要屬性

屬性說明
Control是否按下 Ctrl 鍵
KeyCode取得鍵盤代碼(Keys 列舉)
KeyData取得鍵資料(含修飾鍵)
KeyValue取得鍵盤數值
Modifiers取得修飾鍵旗標(Ctrl/Shift/Alt 組合)
Shift是否按下 Shift 鍵
Alt是否按下 Alt 鍵

2. KeyUp 事件

釋放鍵時觸發。

範例:按鍵釋放後調整視窗大小

private void frmKeyDownUP_KeyUp(object sender, KeyEventArgs e)
{
    this.ClientSize = new System.Drawing.Size(800, 100);
}

KeyPress 事件補充

KeyPress 僅在輸入字元鍵(字母、數字、符號)時觸發,提供 KeyChar 屬性取得實際字元,適合字元級驗證(如只允許數字輸入)。

實務應用建議

  • 攔截組合鍵(如 Ctrl+S 存檔):在 KeyDown 判斷 e.Control && e.KeyCode == Keys.S,並設 e.Handled = true 阻止進一步處理。
  • 遊戲開發:使用 KeyDown/KeyUp 維護按鍵狀態陣列,實現流暢移動控制。
  • 表單驗證:KeyPress 攔截非法字元,KeyDown 處理導航鍵(Enter、Tab、Esc)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved