2009-03-10 6 views

Antwort

2

Obwohl es keine offensichtliche Möglichkeit gibt, Tastenkombinationen für Befehle bereitzustellen, die nicht in Menüs enthalten sind, ist es nicht schwer, diese hinzuzufügen. Es gibt fünf grundlegende Schritte:

Definieren Sie eine Beschleunigeraufzählung.

private enum Accelerators { Unspecified = 0, Home, Save, Print, Logout }; 

eine Hash-Tabelle erstellen die aufgezählten Werte enthalten. Erstellen

Hashtable _accelHash() = new Hashtable(); 

eine Klasse Zugriffstasten zu repräsentieren.

Laden Sie die Tabelle mit der Schlüsselnumerierung.

_accelHash.Add(new AcceleratorKey(Keys.Alt|Keys.H), 
            Accelerators.Home); 
_accelHash.Add(new AcceleratorKey(Keys.Alt|Keys.S), 
            Accelerators.Save); 
_accelHash.Add(new AcceleratorKey(Keys.Alt|Keys.P), 
            Accelerators.Print); 
_accelHash.Add(new AcceleratorKey(Keys.Alt|Keys.X), 
            Accelerators.Logout); 

Schließlich überschreiben ProcessCmdKey und einen Switch-Anweisung verwenden, um die richtige Methode zu versenden.

protected override bool ProcessCmdKey(ref Message msg, 
             Keys keyData) 
{ 
    ... 
} 

Alternativ für einen etwas anspruchsvolleren Ansatz, könnten Sie die Hash-Tabelle Karte an die Delegierten haben, die die Methoden waren Sie, solange sie alle hatten die gleiche Methode Unterschrift aufrufen wollte.

Here's a short article, die die oben genannten Schritte detaillierter beschreibt.

0

Eine gängige Methode zum Implementieren von Tastenkombinationen besteht darin, sie in einem Tastaturereignis wie KeyDown oder KeyUp zu erkennen.

Beispiel

public void Form1_KeyUp(object sender,KeyEventArgs e) 
{ 
if (e.Control && e.KeyData==Keys.A) 
{ 
//handle ctrl+a 
} 
Verwandte Themen