KeyEventArgs.Modifiers
Giá trị này của của enum System.Windows.Forms.Keys, giúp xác định được các phím modifier nào được nhấn (SHIFT, CTRL và ALT). Property này chỉ trả về các giá trị của các phím SHIFT, CTRL, ALT và None (không phím nào được nhấn), ngoài ra có thể kiểm tra kết hợp các phím bằng toán tử OR ‘|’.
Ví dụ sau kiểm tra cả ba phím Control, Shift và Alt được nhấn cùng lúc:
1 2 3 4 5 6 | protected override void OnKeyDown(KeyEventArgs e) { if (e.Modifiers==(Keys.Control | Keys.Shift | Keys.Alt)) // do something base .OnKeyDown(e); } |
Thay vì lấy giá trị này của đối tượng KeyEventArgs, bạn có thể lấy trực tiếp từ static property Control.ModifierKeys:
1 2 | if (Control.ModifierKeys==(Keys.Control | Keys.Shift | Keys.Alt)) // do something |
Phân biệt KeyCode, KeyValue và KeyData
Đây là các property dễ bị nhầm lẫn của KeyEventArgs. Bảng sau sẽ giúp bạn phân biệt được 3 property này:
Name | Type | Description |
KeyCode | System.Windows.Forms.Keys | Trả về một giá trị trong enum Keys tương đương với một phím được nhấn. Ví dụ nếu bạn giữ CTRL và nhấn A, thì KeyCode sẽ trả về Keys.A. |
KeyValue | int | Giá trị của KeyCode theo kiểu integer |
KeyData | System.Windows.Forms.Keys | Giá trị kiểu Keys kết hợp bởi nhiều phím (các phím modifier và phím thông thường) |
Từ sự khác biệt này, khi cần kiểm tra tổ hợp phím được nhấn, bạn cần sử dụng KeyData thay vì KeyCode. Ví dụ sau kiểm tra tổ hợp phím Ctrl+A trong sự kiện KeyDown:
1 2 3 4 5 6 | protected override void OnKeyDown(KeyEventArgs e) { if (e.KeyCode==(Keys.Control | Keys.A)) // do something base .OnKeyDown(e); } |
Lớp KeyEventArgs cũng cung cấp các property Shift, Control, Alt có kiểu Boolean để kiểm tra modifier tương ứng có được nhấn không. Vì vậy ví dụ trên có thể được viết theo cách khác và không cần toán tử:
1 2 3 4 5 6 | protected override void OnKeyDown(KeyEventArgs e) { if (e.Control && e.KeyCode==Keys.A) // do something base .OnKeyDown(e); } |
Tham khảo
MSDN:
0 nhận xét:
Đăng nhận xét