2012-04-24 40 views
7

(sử dụng WPF) tôi cố gắng phát hiện khi Ctrl + Nhập bị trúng. vì vậy tôi đã thử mã này:phát hiện Ctrl + Enter

if (e.Key == Key.Return && (e.Key == Key.LeftCtrl || e.Key == Key.RightCtrl)) 
{ 
    //Do Something    
} 

Rõ ràng điều này là không chính xác, vì nó không hoạt động. Ai đó có thể giúp tôi, giải thích đúng cách không?

thanx

Trả lời

12

Rõ ràng e.Key không thể tương đương với nhiều hơn một giá trị khác nhau trong cùng một sự kiện.

Bạn cần xử lý một trong các sự kiện sử dụng KeyEventArgs, ở đó bạn sẽ tìm thấy các thuộc tính như ControlModifiers sẽ giúp bạn phát hiện các kết hợp.

Sự kiện KeyPress, sử dụng KeyPressEventArgs, chỉ không có đủ thông tin.


Drat, bạn nói WPF không phải bạn. Có vẻ như bạn cần e.KeyboardDevice.Modifiers.

+1

thanx! 'e.KeyboardDevice.Modifiers' sẽ giúp tôi hiểu tôi nghĩ :) – Dante1986

6

Tôi nghĩ bạn cần một Trình xử lý khóa đặc biệt. Tôi googled một chút một tìm thấy một giải pháp here.

Tiếp theo mã từ liên kết giới thiệu có thể giải quyết vấn đề của bạn:

void SpecialKeyHandler(object sender, KeyEventArgs e) 
{ 
    // Ctrl + N 
    if ((Keyboard.Modifiers == ModifierKeys.Control) && (e.Key == Key.N)) 
    { 
     MessageBox.Show("New"); 
    } 

    // Ctrl + O 
    if ((Keyboard.Modifiers == ModifierKeys.Control) && (e.Key == Key.O)) 
    { 
     MessageBox.Show("Open"); 
    } 

    // Ctrl + S 
    if ((Keyboard.Modifiers == ModifierKeys.Control) && (e.Key == Key.S)) 
    { 
     MessageBox.Show("Save"); 
    } 

    // Ctrl + Alt + I 
    if ((Keyboard.Modifiers == (ModifierKeys.Alt | ModifierKeys.Control)) && (e.Key == Key.I)) 
    { 
     MessageBox.Show("Ctrl + Alt + I"); 
    } 
} 
+0

thanx rất nhiều cho cái này! – Dante1986

+0

niềm vui của tôi, nếu tôi đã được giúp đỡ bất kỳ. :) – Pank

+0

Câu trả lời thực tế là ở đây nếu có ai thắc mắc. Điều này nên được đánh dấu là câu trả lời, đầu tiên chỉ là lười biếng. – Yusha

0
if (e.KeyChar == 10) 
      { 
      ///Code 
      } 

Hoặc

if ((Char)e.KeyChar == '\n') 
      { 
      ///Code 
      } 
3
if (e.Modifiers == Keys.Control && e.KeyCode == Keys.Enter) 
Các vấn đề liên quan