2016-09-28 2 views
-1

Ich mache einen Taschenrechner und ich möchte jede Taste bestimmten Hotkey zuweisen, aber ich kann es nicht tun, ich muss auf diese Weise verwenden, die nicht so nützlich ist, gibt es ist ein Weg, wie ich diese Methode verwenden kann, wenn es irgendeine öffentliche Methode ist? Wie in button_click Ereignis keydata = keys.numpad0 oder geben Sie zum Beispiel processcmdkey (keys.numpad0) ist das möglich?C# Wie man ProcessCmdKey als öffentliche Methode macht

edit: jemand schrieb diesen Code und dann gelöscht, ich mochte es, aber ich will nur wissen, was im ersten Argumente zu geben, wenn es

 public bool hotkeys(ref Message msg, Keys keyData) 
    { 
     return ProcessCmdKey(ref msg, keyData); 
    } 
    private void button17_Click(object sender, EventArgs e) 
    { 
     hotkeys(ref ,Keys.Back); 
     erasingall(); 
    } 

beschwören, was soll ich im ersten Argumente eingeben, wenn Beschwörung?

+0

Warum genau ist diese Methode für Sie nicht nützlich? Es hat mir in einem ähnlichen Fall sehr geholfen. –

+0

Das Problem ist, ich habe wie die "+" Taste im Rechner, die einige Sachen tut, wenn es eine einfache Möglichkeit gibt, die processcmdkey in der Taste zu beschwören, so dass es einfacher sein kann, anstatt den gesamten Code wieder vom Original zum kopieren Hotkeys? –

Antwort

1

Wenn Sie direkt in Ihre Schaltfläche klicken, klicken Sie auf ClickEvent und innerhalb des Abonnenten führen Sie Ihre Methode mit den entsprechenden Parametern aus. Wahrscheinlich müssen Sie die Klasse, die die Methode enthält, als Abhängigkeit injizieren oder die Methode statisch statisch machen oder sie direkt in der partiellen Klasse erstellen. Beispiel:

private void ButtonPlusClick(object sender, EventArgs e) 
    { 
     this.operationsContainer.Execute(Constants.PlusSign); 
    } 

Dabei ist OperationsContainer die Klasse, die die Methode für Vorgänge enthält.

Wenn Sie die Eingabe auch direkt von Ihrer Tastatur aus eingeben möchten, können Sie KeyPreview True aus den Eigenschaften Ihres Formulars auswählen und dann das Ereignis für den Tastendruck wie FormDetectKeyPress verwenden. Zum Beispiel:

private void FormDetectKeyPress(object sender, KeyPressEventArgs e) 
    { 
     var pressedKeyValue = e.KeyChar; 
     switch (pressedKeyValue) 
     { 
      case '+': 
       { 
        this.ButtonPlusClick(sender, null); 
       } 

       break; 
      default: 
       return; 

      } 

können Sie alle Funktionen mit Tastenklick Ereignisse in ähnlicher Weise und entsprechende Taste von der Tastatur in dem Teilnehmer FormDetectKeyPress hinzufügen.

Verwandte Themen