Doppeltes Event

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Acr0most.

    Doppeltes Event

    Hallo an alle,

    ich habe lange nicht mehr mit VB.Net programmiert und es auch nicht gelernt. ALso: Bitte entschuldigt die bestimmt für Euch einfache Frage :rolleyes:

    Ich habe eine Form mit Textbox und Button. Nach der Eingabe in der Textbox soll mit "Enter, Tabulator oder durch anklicken des Button" das Ereignis ausgelöst werden.

    Enter habe ich mit KeyPress
    Tabulator mit Leave
    Button logisch mit Click.

    Wenn ich aber den Button klicke, wird gleichzeitig Leave erfüllt und somit das Ereignis zweimal ausgeführt.

    Wir kann ich es ändern?

    Vielen Dank

    Ronin269

    VB.NET-Quellcode

    1. Private Sub bt_start_Click(sender As Object, e As EventArgs) Handles bt_start.Click
    2. open()
    3. End Sub
    4. Private Sub tb_eingabe_KeyDown(sender As Object, e As KeyEventArgs) Handles tb_eingabe.KeyDown, bt_start.Click
    5. If e.KeyCode = Keys.Enter Then
    6. open()
    7. tb_eingabe.SelectAll()
    8. End If
    9. End Sub
    10. Private Sub tb_eingabe_KeyPress(sender As Object, e As KeyPressEventArgs) Handles tb_eingabe.KeyPress
    11. Select Case Asc(e.KeyChar)
    12. Case 48 To 57
    13. ' Zahlen
    14. Case Else
    15. ' alle anderen Eingaben unterdrücken
    16. e.Handled = True
    17. End Select
    18. End Sub
    19. Private Sub tb_eingabe_Leave(sender As Object, e As EventArgs) Handles tb_eingabe.Leave
    20. open()
    21. tb_eingabe.SelectAll()
    22. End Sub


    open () ist das eigentliche Programm!
    1. Warum verwendest Du kein NumericUpDown, wenn eh nur Zahlen akzeptiert werden sollen?
    2. Wenn Du noch andere CEs hast, dann wird, wenn man zuerst in der TextBox ist und dann ein anderess CE mit der Maus anwählt, auch die Aktion ausgelöst.
    3. Statt im Leave- oder LostFocus-EventHandler die Aktion auszulösen, prüfe im PreviewKeyDown-EventHandler der Textbox, ob die TabTaste gedrückt wurde. Und wenn ja, löse nur dann das Ereignis aus.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    ronin269 schrieb:

    Wenn ich aber den Button klicke, wird gleichzeitig Leave erfüllt und somit das Ereignis zweimal ausgeführt.


    Kurz nochmal hierzu:

    Du bist in deiner Textbox, schreibst wie wild drauf zu, und Klickst dann den Button.

    Natürlich wird zunächst das Leave-Event der Textbox getriggert, da du ja von der Textbox zum Button wechselst.
    Nachfolgend ganz normal das Click-Event des Buttons.

    Deshalb wird der Spaß doppelt ausgeführt.


    LG Acr0most
    Wenn das Leben wirklich nur aus Nullen und Einsen besteht, dann laufen sicherlich genügen Nullen frei herum. :D
    Signature-Move 8o
    kein Problem mit privaten Konversationen zu Thema XY :thumbup: