2009-02-19 25 views

Trả lời

12

Chỉnh sửa: Bằng cách nào đó tôi đã đọc sai câu hỏi của bạn để bao gồm việc kiểm tra ký tự hợp lệ. Bạn đã sửa đổi nó chưa? Tôi đã thêm một mô tả của mỗi.

  • keyCode là giá trị Keys liệt kê cho phím đó là xuống
  • KeyData cũng giống như keyCode, nhưng kết hợp với bất kỳ phím SHIFT/CTRL phím/ALT
  • KeyValue chỉ đơn giản là đại diện số nguyên của Mã khóa

Nếu bạn chỉ cần t nhân vật của anh ấy, tôi có thể khuyên bạn nên sử dụng sự kiện KeyPress và sử dụng KeyPressEventArgs. KeyChar tài sản. Sau đó, bạn có thể sử dụng Char.IsLetterOrDigit() để tìm hiểu xem đó có phải là ký tự hợp lệ hay không.

Cách khác, bạn có thể truyền KeyEventArgs.KeyCode cho một char và sau đó sử dụng Char.IsLetterOrDigit trên đó.

+0

Tôi không đồng ý ... Bạn giả định rằng người dùng không muốn bắt bất kỳ công cụ sửa đổi nào và đầu vào của anh ta bị giới hạn ở ASCII bàn phím. – Cerebrus

+0

IsLetterOrDigit chỉ hoạt động với ascii? – Svish

+0

IsLetterOrDigit sử dụng CharUnicodeInfo.GetUnicodeCategory nếu ký tự không phải là latin. –

1

Tôi khuyên bạn nên sử dụng thuộc tính KeyCode để kiểm tra số đếm Keys cho hầu hết các hoạt động. Tuy nhiên một số khác biệt cơ bản bên dưới có thể giúp bạn quyết định tốt hơn bạn cần loại nào trong hoàn cảnh của mình.

Sự khác biệt:

  • KeyCode - Đại diện cho giá trị Keys liệt kê đại diện cho quan trọng mà hiện đang trong tình trạng xuống.

  • KeyData - Tương tự như KeyCode, ngoại trừ việc nó có thêm thông tin dưới dạng các bộ điều chỉnh - Shift/Ctrl/Alt, vv

  • KeyValue - Giá trị số của KeyCode. sử dụng

+0

Nhưng KeyCode và KeyData có cùng loại, liệt kê khóa. Tôi không thể tìm thấy thêm bất kỳ ở đó? – Svish

+0

Nó sẽ chỉ khác nếu một công cụ sửa đổi khóa (shift/alt/ctrl) bị hỏng. –

+0

ooh, gây ra một điều cờ? – Svish

0

Rất cơ bản của KeyDown

private void tbSomeText_KeyDown (object sender, KeyEventArgs e) 
    { 
     if (e.KeyCode == Keys.B && e.Modifiers != Keys.Shift) { 

      MessageBox.Show("You Pressed b"); 
     } 
     else if (e.KeyCode == Keys.A && e.Modifiers == Keys.Shift) { 
      MessageBox.Show("You Pressed Shift+A"); 
     } 
    } 
0

Xem my answer-other question của bạn:

Sử dụng sự kiện KeyPressed.

Trích dẫn MSDN:

Một KeyPressEventArgs xác định nhân vật được sáng tác khi người dùng nhấn một phím. Ví dụ, khi người dùng nhấn SHIFT + K, tài sản KeyChar trả về một K. hoa

Bằng cách này bạn không cần phải mess xung quanh với e.KeyCode, e.KeyDatae.KeyValue.

+0

Vâng, chấp nhận câu trả lời của bạn trong câu hỏi khác. Nhưng ở đây tôi đã tìm thêm một lời giải thích chung về cách sử dụng của họ. Đó là lý do tại sao tôi chia nó ra. Một cái gì đó mà tôi đã đến để suy nghĩ về juuust khi tôi nhấp vào nút gửi, vì vậy, xin lỗi về sự nhầm lẫn =) – Svish

Các vấn đề liên quan