2009-07-17 10 views

Odpowiedz

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

Jeśli chcesz, aby wykryć w Naciśnij klawisz obsługi, by spojrzeć na właściwości modyfikatorów:

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

Faktycznie, patrząc na to i widząc, że nie korzysta z e argument, Wydaje się, że tak długo jak twoje "to" pochodzi od Formy lub Kontroli, możesz wykonać to połączenie w dowolnym czasie, a nie tylko w procedurze obsługi zdarzeń klawiatury.

Jednakże, jeśli chce zapewnić połączenie, takie jak Ctrl - został wciśnięty, byś potrzebował dodatkowej logiki.

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

Dodawanie późną odpowiedź na starej pytanie ...

innych odpowiedzi odczytać stan klawisza sterującego prąd. Jeśli chcesz bezpośrednio odczytać flagę sterowania z podjętych args zdarzenia (czyli jak to było w czasie, gdy nastąpiło zdarzenie), użyj KeyUp lub KeyDown zdarzenia (nie KeyPress):

private void HandleTextKeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.Control && e.KeyCode == Keys.A) 
    { 
     ((TextBox)sender).SelectAll(); 
     e.Handled = true; 
    } 
}