2009-09-04 16 views
6

Dưới đây là mã cho Ctrl + F (từ một bài đăng SO khác). Nhưng làm thế nào để bạn phát hiện một số Ctrl + ForwardSlash? hoặc Ctrl +/ (lưu ý: phân chia không hoạt động)Cách phát hiện Ctrl - Chuyển tiếp Slash trong ứng dụng WinForm

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) 
    { 
     if (1 == 1) //keyData == (Keys.Control | Keys.F)) 
     { 
      MessageBox.Show("What the Ctrl+F?"); 
      return true; 
     } 
     return base.ProcessCmdKey(ref msg, keyData); 
    } 
+0

Công cụ sửa đổi điều khiển làm cho nó muốn Câu hỏi thay vì Chia - ít nhất là trên bàn phím của Hoa Kỳ. –

Trả lời

9

Divide nên hoạt động tốt.

Đối Ctrl + \:

if (keyData == (Keys.Control | Keys.OemPipe)) 

Đối Ctrl + /:

if (keyData == (Keys.Control | Keys.OemQuestion)) 

Đối với một số lý do (không chắc chắn lý do tại sao), khi bạn bẫy Ctrl + các phím này, chúng đang ánh xạ tới keymapp "đã chuyển" ings.


Edit:

Một mẹo nhỏ cho việc tìm kiếm này, hoặc bất kỳ phím nào khác. Đặt điểm ngắt trên bất kỳ đường nào trong phương thức đó và xem giá trị keyData khi bạn nhấn phím bạn đang cố gắng bẫy. Tôi khuyên bạn nên làm điều này mà không cần kiểm soát. Sau đó, bạn có thể sử dụng bộ phản xạ để nhận tất cả các giá trị cụ thể cho Keys và tìm "khóa" có giá trị phù hợp.

+0

không hoạt động đối với tôi. lưu ý: Tôi đang nói về/ở trên nhập hoặc gần nó. Không phải trên bàn phím số (nếu bạn đang sử dụng máy tính xách tay). Bất kỳ cách đơn giản để nắm bắt các mã khóa thực tế trong một hộp thư và sau đó chỉ cần viết lại bằng cách sử dụng mã số? – BuddyJoe

+0

@Tyndall: Tôi vừa thử nghiệm điều này. Câu trả lời mới của tôi sẽ cho bạn câu trả lời đúng. –

+0

Trên bàn phím của tôi, dấu gạch chéo ngược ở trên nhập. – recursive

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