2009-07-17 73 views

Trả lời

15
bool ctrl = ((Control.ModifierKeys & Keys.Control) == Keys.Control); 
5

Nếu bạn muốn phát hiện trong một handler bấm Key, bạn sẽ nhìn vào các thuộc tính modifier:

private void button1_KeyPress(object sender, 
           System.Windows.Forms.KeyPressEventArgs e) 
{ 
    if ((Control.ModifierKeys & Keys.Control) == Keys.Control) 
    { 
    MessageBox.Show("Pressed " + Keys.Control); 
    } 
} 

Trên thực tế, nhìn vào đó và thấy nó không sử dụng lập luận e, nó có vẻ miễn là "điều này" có nguồn gốc từ Biểu mẫu hoặc Kiểm soát thì bạn có thể thực hiện cuộc gọi này bất cứ lúc nào và không chỉ trong trình xử lý sự kiện bàn phím.

Tuy nhiên, nếu bạn muốn đảm bảo một sự kết hợp, chẳng hạn như Ctrl - Một được nhấn, bạn sẽ cần một số logic bổ sung.

private void myKeyPress(object sender, 
         System.Windows.Forms.KeyPressEventArgs e) 
{ 
    if (((Control.ModifierKeys & Keys.Control) == Keys.Control) 
     && e.KeyChar == 'A') 
    { 
    SelectAll(); 
    } 
} 
1

Thêm một câu trả lời muộn để một câu hỏi cũ ...

Những câu trả lời khác đọc trạng thái hiện của phím điều khiển. Nếu bạn muốn trực tiếp đọc các cờ điều khiển từ args sự kiện thông qua (ví dụ như nó đã được tại thời điểm mà sự kiện này xảy ra), sử dụng một trong hai KeyUp hoặc KeyDown sự kiện (không KeyPress):

private void HandleTextKeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.Control && e.KeyCode == Keys.A) 
    { 
     ((TextBox)sender).SelectAll(); 
     e.Handled = true; 
    } 
} 
Các vấn đề liên quan