Wie wandle ich ein "Schlüssel" enum-Wert in einen "int" - Zeichen in C#?
Dies scheint wie etwas, das sollte einfach sein, aber ich bin eine harte Zeit, herauszufinden, was geschehen muss, hier.
In der "KeyDown" Event-Handler, wenn das "e" haben.KeyValue" ist eine Nummer, die ich will, um es zu behandeln wie eine Zahl ein und speichern Sie es als ein int. Also, wenn ich auf "8" auf dem Nummernblock, will ich nicht "Numpad8" ich will den int-Wert 8, ich kann addieren oder subtrahieren oder was auch immer.
So, wie konvertiere ich von der KeyValue ein int?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich würde mich mit dieser Lösung:
...wenn der Punkt war, um den numerischen Wert für die Beschriftung des Schlüssels wurde gelocht.
Sollte sowas gut funktionieren: (Bearbeitet)
Fakten:
Die Tastatur hat Tasten.
Einige Tasten, zahlen und manche nicht.
Problem (umformuliert):
Rendite einen numerischen Wert dargestellt mit einem Schlüssel, wenn der Schlüssel eine Zahl repräsentiert.
Um das problem zu lösen ist es notwendig zu wissen, welche Schlüssel (aus der Menge aller Schlüssel) zahlen sowie exakten numerischen Wert (Anzahl) Schlüssel darstellt.
Meines Wissens gibt es nicht eine einfache Möglichkeit zu bekommen, wie ein mapping aus dem Rahmen.
Hinweis: Die Tatsache, D0-D9 und NumPad0-NamPad9 werden nacheinander in das Keys-enum ist zufällig und unter Berufung auf diese Werte, die nacheinander angeordnet sind, ist unbegründet.
Also Lösung wäre:
Wohl nicht die einfachste Lösung, aber die, Modelle die Lösung eng.
Je nachdem, wie viele Tasten Sie verfolgen, die einfachste Methode wäre für Sie zu erstellen Sie eine select case (oder switch-Anweisung in C# denke ich mal?) das wäre zu überprüfen den Wert Ihrer keydown-Ereignis und je nach Wert einen Wert zuweisen, um eine ganze Zahl, die angemessen ist.
Wenn Sie möchten, NUMERISCHE Werte haben, müssen Sie erstellen eine
switch(e.KeyCode)
Aussage und beurteilen Sie die Taste, und erstellen Sie Ihren eigenen int. Es gibt keinen einfachen Weg, um aus einemKeys
in einen numerischen Wert repräsentiert die Nummer auf dem Schlüssel. Die nächsten, die Sie bekommen konnte, könnte sein das ASCII-äquivalent, der noch übersetzt werden müssen.Konnte Sie nur zu hören für die
KeyPress
Veranstaltung statt? Es wird den Charakter, die war tatsächlich gedrückt.Diese Funktion wird tun, was Sie wollen:
Nenne es gerne so:
Die KeyValue stellt die Zeichen-code für die Taste, die gedrückt wurde.
Um den numerischen valaue Sie sollten finden Sie die Zeichen für die Taste, die gedrückt wurde, dann analysieren Sie es von einem Charakter zu einem integer.
Etwas wie Konvertieren.ToInt32(e.KeyCode.ToString())
Oder erstellen Sie eine extension-Methode, und rufen Sie es wie
denen die Erweiterung die Methode ist
int i = (int)e.KeyValue;