Konvertieren von KeyCode in String

  • VB.NET

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von Mad Andy.

    Konvertieren von KeyCode in String

    Hallo VB-Paradise

    Ich bin verwirrt:

    Ich möchte gerne in eine TextBox Zahlen per Tastatur(KeyPreView) eingeben.

    wenn ich die Oem-Zahlen verwende (ASCII 48-57)
    Dann kann ich die in eine TextBox per TextBox1.Text &= Chr(e.KeyCode) einfügen

    Wenn ich aber NumPad beachte (ASCII 96-105)
    Dann werde diese als Buchstaben interpretiert.

    Man könnte ja KeyChar verwenden, aber ich möchte gerne bei KeyDown Event bleiben

    hat jemand einen Tipp für mich? Danke
    KeyCode ist bei KeyDown Ereignis vorhanden
    KeyChar bei KeyPress

    auf jeden Fall was mich völlig verwirrt hat, dass ich mir einen Textcode geschrieben habe:

    MsgBox(e.KeyCode)

    Dann alle Zahlen getippt. Da kam dass von oben raus. Und wenn ich NumPad Zahlen wieder einlese, mit gleichen ASCII Code, gibt er buchtsaben aus (Bei Num4 die 'd', Bei Num5 die 'e' usw)
    Andy, du bist der King :thumbsup:

    jetzt habe ich anderes Problem

    abhängig von KeyCode (KeyChar eigentlich, spielt jetzt aber keine große rolle, da es nur zahlen sind) will ich Click-Ereignis von jeweiligen button ausführen

    habe es etwa so gedacht:

    VB.NET-Quellcode

    1. Dim but_ton As Button = Me.Controls("cmd_number_" & e.KeyChar)
    2. 'Hier Muss Click Event ausgeführt werden :(


    Hat einer einen Tipp?
    mh.. fremde Ereignisse kann man so scheinbar nicht auslösen :(
    Du kannst noch

    VB.NET-Quellcode

    1. Me.Controls("cmd_number_" & e.KeyChar).RaiseEvent Click
    versuchen oder schauen, was passiert, wenn du einfach nur

    VB.NET-Quellcode

    1. Me.Controls("cmd_number_" & e.KeyChar).Click
    machst. Andere Einzeiler würden mir dafür nicht einfallen :D

    VB.NET-Quellcode

    1. Me.Controls("cmd_number_" & e.KeyChar).Click(e, sender)


    Quellcode

    1. Fehler 1 "Public Event Click(sender As Object, e As System.EventArgs)" ist ein Ereignis und kann nicht direkt aufgerufen werden. Verwenden Sie eine RaiseEvent-Anweisung, um ein Ereignis aufzurufen.


    Wenn ich RaiseEvent verwende wird Me nicht erkannt.

    Voll die Kacka :(

    Lupuses ( :D ) Vorschlag scheint mir am einfachsten, aber auch am quantitativsten ( :D ) Weil ich 9 Button habe. Wenn ich für jedes davon eine Function erstelle...


    Aber ich löse das Problem glaube ich mit reagieren auf jede Taste einzeln. Habe dann 9fache Switch, aber auch keine Probleme mehr den Event aufzurufen. Danke für Die Hilfe :)
    Fehler 1 "RaiseEvent" ist kein Member von "System.Windows.Forms.Control".

    und

    Fehler 2 "Public Event Click(sender As Object, e As System.EventArgs)" ist ein Ereignis und kann nicht direkt aufgerufen werden. Verwenden Sie eine RaiseEvent-Anweisung, um ein Ereignis aufzurufen.
    So sollte es gehen, wenn der Aufruf innerhalb der Form stattfindet

    VB.NET-Quellcode

    1. Call Button1_Click(System.DBNull.Value, System.EventArgs.Empty)


    PS: Wieso steht denn da <<<<< Anfänger?
    Gruß
    Peterfido

    Keine Unterstützung per PN!
    Hey, dein Code ist gut und schön, löst aber leider das Problem nicht.
    Er will mehrere Subs (Button-Clicks) dynamisch aufrufen; also kein Select Case.

    Wenn du den Button überladest, könntest du eine Methode hinzufügen, die das Eregnis auslöst. Ich glaub eigentlich, dass es noch irgendeine andere Lösung gibt, nur weiß ich sie nicht :(

    Mir ist aber noch was eingefallen. Macht in deinem Fall den Code aber wahrscheinlich nicht kürzer.
    Du verwendest eine Click-Sub für alle Buttons und hast in dieser einen Sub einen Switch o.Ä., der von dem Object (1. Parameter) abhängt. Wenn du dann vom KeyDown aus das Ereignis auslösen willst, kannst du einfach die Sub aufrufen und als 1. Parameter das jeweilige Objekt übergeben.

    VB.NET-Quellcode

    1. someClick(Me.Controls("Textbox" & nummer), ...)



    @ PS: Postanzahl.. ist noch immer Standard, glaub ich.


    so long..
    Andy