2009-07-17 9 views

Antwort

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

Wenn Sie in einem Tastendruck Handler ermitteln möchten, würden Sie an den Modifikator Eigenschaften aussehen:

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

Eigentlich an, dass suchen und zu sehen sie nicht das e Argument es nicht verwendet, Solange Ihr "dies" von einem Formular oder einem Steuerelement abgeleitet wird, können Sie diesen Aufruf jederzeit und nicht nur in einem Tastatur-Ereignishandler vornehmen.

Wenn Sie jedoch eine Kombination, wie Ctrl, um sicherzustellen, wollte - A gedrückt wurde, würden Sie einige zusätzliche Logik benötigen.

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

eine späte Antwort auf eine alte Frage ... Hinzufügen

Die anderen Antworten lesen Sie die aktuellen Zustand der Steuertaste. Wenn Sie direkt wollen die Steuerflagge aus dem übergebenen Ereignisse args gelesen (das heißt, wie es zu der Zeit, dass das Ereignis aufgetreten war), verwenden Sie entweder die KeyUp oder KeyDown Ereignisse (nicht KeyPress):

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