2010-03-19 11 views

Antwort

9

die UseMnemonic Eigenschaft auf true der Schaltfläche Set und ein kaufmännische hinzufügen (&) kurz vor dem Schreiben in der Text-Eigenschaft der Schaltfläche SieFormal möchte für den Hotkey verwenden.

Der Benutzer würde Alt + drücken, um den Hotkey zu aktivieren.

15

Überschreiben Form ProcessCmdKey. Wenn Sie einen Tastenanschlag finden, der Ihnen gefällt, rufen Sie die gleiche Methode auf, die auch der Button verwenden würde.

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) 
{ 
    if (keyData == (Keys.Control | Keys.X)) 
    { 
     DoSomething(); 
     return true; 
    } 
    return base.ProcessCmdKey(ref msg, keyData); 
} 

private void button1_Click(object sender, EventArgs e) 
{ 
    DoSomething(); 
} 

private void DoSomething() 
{ 
    MessageBox.Show("hi!"); 
} 

EDIT: Jay-Methode ist besser, wenn Sie eine entsprechende mnemonic zu finden.

0

Ich denke, das ist das, was Sie wollen:

private void Form1_KeyDown(object sender, KeyEventArgs e) 
    { 
     if (e.KeyCode == Keys.Enter) 
     { 
      //Do whatever you want here... 
     } 
    } 

Natürlich Sie Keys.Enter, was auch immer Schlüssel Sie möchten ändern.

1

Auch gibt es AcceptButton und CancelButton-Eigenschaften in jeder Form. Wenn Sie Ihre Hotkey-Verwendung einschränken, um Schaltflächen einzugeben und zu entfernen, die wiederum bestimmte Schaltflächen aufrufen sollen, empfehle ich Ihnen, die Verwendung dieser Eigenschaften zu berücksichtigen.

6

Windows-Anwendung und Tastenkürzel sind Synonyme. Menschen bevorzugen die Verwendung von Tastenkombinationen für schnellere Aktivitäten. Angenommen, Sie befinden sich in einem Textfeld und Sie möchten F5 drücken, um das Formular neu zu laden. Sie möchten den Mauszeiger nicht bewegen. Also, was Sie tun werden ist, dass Sie "Key Down" -Ereignis zum Textfeld hinzufügen werden. Wenn Sie sich jedoch in einem anderen Textfeld oder in einer Schaltfläche befinden, funktioniert das nicht. Also, Sie werden "Key Down" -Ereignis zu Ihrem Formular hinzufügen.

Aber Sie müssen eine Eigenschaft aktivieren, um es richtig zu arbeiten, und das ist der Trick.

private void Form1_KeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.KeyCode == Keys.F5) 
    { 
     btnRefresh_Click(null, null); 
    } 
} 

Aber golden Trick ist, in das Eigenschaftenfenster des Formulars folgende Änderungen vornehmen:

KeyPreview = True 

Programmierung Genießen.

-1

Obwohl dieser Beitrag ist super alt hier ist eine einfachere Möglichkeit, es zu tun, der Code ist ziemlich arm, aber es wird die Arbeit sehr gut gemacht.

 private void Form1_KeyDown(object sender, KeyEventArgs e) 
     { 
     if (e.KeyCode == Keys.Enter) 
     { 

      button1.PerformClick(); 

     } 
+0

Ich glaube nicht, dass die Arbeit getan wird, weil dies nicht kompiliert . –

0
this.KeyDown += new KeyEventHandler(Form1_KeyDown); 

void Form1_KeyDown(object sender, KeyEventArgs e) 
{ 
if (e.Alt && e.KeyCode == Keys.W) 
    { 
    //do something 
    } 
} 
0

Basierend auf Antwort Micheal hier eine elegantere Version, wenn Sie nicht in Kombination Tasten verwenden:

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) 
{ 
    switch(keyData) 
    { 
     case Keys.F2: 
      // do something... 
      return true; 
     case Keys.F3: 
      // do something... 
      return true; 
     case Keys.F4: 
      // do something... 
      return true; 
     default: 
      return base.ProcessCmdKey(ref msg, keyData); 
    }    
}