在 `KeyPress` 事件中直接使用 ASCII 碼判斷按鍵,比 `Keys` 列舉更直觀精簡。
private void TextBox_KeyPress(object sender, KeyPressEventArgs e) {
int ascii = (int)e.KeyChar; // 直接轉換
switch (ascii) {
case 3: // Ctrl + C (ETX)
HandleCopy();
break;
case 22: // Ctrl + V (SYN)
HandlePaste();
break;
case 13: // Enter (CR)
HandleEnter();
e.Handled = true; // 阻止預設聲音
break;
case 27: // Escape (ESC)
HandleCancel();
break;
}
}
| 鍵組合 | ASCII | 縮寫 | 說明 |
|---|---|---|---|
| Ctrl + @ | 0 | NUL | 空字元 |
| Ctrl + A | 1 | SOH | 標題開始 |
| Ctrl + B | 2 | STX | 本文開始 |
| Ctrl + C | 3 | ETX | 本文結束 (複製) |
| Ctrl + D | 4 | EOT | 傳輸結束 |
| Ctrl + E | 5 | ENQ | 詢問字元 |
| Ctrl + F | 6 | ACK | 確認字元 |
| Ctrl + G | 7 | BEL | 響鈴 |
| Backspace | 8 | BS | 退格 |
| Tab | 9 | HT | 水平製表 |
| Ctrl + J / Enter | 10 | LF | 換行 |
| Ctrl + K | 11 | VT | 垂直製表 |
| Ctrl + L | 12 | FF | 換頁 |
| Enter | 13 | CR | 歸位 |
| Ctrl + N | 14 | SO | 換出 |
| Ctrl + O | 15 | SI | 換入 |
| Ctrl + P | 16 | DLE | 資料連結逸出 |
| Ctrl + Q | 17 | DC1 | 裝置控制 1 |
| Ctrl + R | 18 | DC2 | 裝置控制 2 |
| Ctrl + S | 19 | DC3 | 裝置控制 3 (XOFF) |
| Ctrl + T | 20 | DC4 | 裝置控制 4 |
| Ctrl + U | 21 | NAK | 否定確認 |
| Ctrl + V | 22 | SYN | 同步閒置 (貼上) |
| Ctrl + W | 23 | ETB | 傳輸區塊結束 |
| Ctrl + X | 24 | CAN | 取消 |
| Ctrl + Y | 25 | EM | 媒介結束 |
| Ctrl + Z | 26 | SUB | 替補 |
| Esc | 27 | ESC | 逃脫 |