Button mit Taste betätigen

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von Süc(HTL)er.

    Button mit Taste betätigen

    Hallo,

    ich habe mal wieder ein Frage an euch :)

    ich möchte in einem Programm einen Button (but_berechnen) mit der "enter-Taste" betätigen.

    habe mir das in etwa so gedacht :

    Quellcode

    1. Private Sub frm_Flaechenberechnung_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
    2. If e.KeyCode = Keys.Enter Then but_berechnen ????
    3. End Sub


    Bei den ???? sollte noch der befehl hin den ich suche ?(

    Ich hoffe das ihr mir weiterhelfen könnt :thumbsup:

    danke im voraus

    Süc(HTL)er

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Süc(HTL)er“ ()

    Hallo mikeb69,

    ich "arbeite" mit vb erst seit ~ 1/2 jahr und bin noch nicht so fix darin
    deshalb fange ich mit "perform click" nicht viel an :S

    bitte erkläre mir kurz wo ich das finde und wie ich es anwende

    Gruß

    Süc(HTL)er

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Süc(HTL)er“ ()

    bei mir is das noch nicht fertig.... ?(

    ....ich bekomme die Fehlermeldung : "System.StackOverflowException wurde nicht behandelt"

    oder habe ich es in einen falschen Sub geschreiben :?: :

    Quellcode

    1. Private Sub but_berechnen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles but_berechnen.Click
    2. If radio_Quadrat.Checked = True Then txt_Ergebnis.Text = (Val(txt_1.Text) * Val(txt_1.Text))
    3. If radio_rechteck.Checked = True Then txt_Ergebnis.Text = (Val(txt_1.Text) * Val(txt_2.Text))
    4. If radio_kreis.Checked = True Then txt_Ergebnis.Text = (Val(txt_1.Text) * Val(txt_1.Text) * 3.141592)
    5. If radio_allgdreieck.Checked = True Then txt_Ergebnis.Text = (Val(txt_1.Text) * Val(txt_2.Text)) / 2
    6. but_berechnen.PerformClick()
    7. End Sub
    Ja, das ist an der falschen Stelle!

    Wenn du auf den Button drückst, wird erst mal das Button-Click-Event ausgelöst. Darin wird dann aber wieder ein Click gemacht --> Das Button-Click-Event wird wieder aufgerufen, und immer so weiter --> StackOverflowException.

    Du musst das Button.PerformClick außerhalb dieses Events hinschreiben, z.B. in das KeyDown des Forms, etc.

    Alteran
    jetzt habe ich es ins keyDown der form geschreiben:

    Quellcode

    1. Private Sub frm_Flaechenberechnung_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
    2. but_berechnen.PerformClick ()
    3. End Sub


    die fehlermeldung ist zwar verschwunden doch das erwünschte ergebnis habe ich immer noch nicht :(

    was mache ich nur falsch ^^
    Das ist nichtmal Code, die Eigenschaft kannst du ganz bequem per Designer einstellen... einfach den Fokus auf die Form, dann im Eigenschaftsfenster unter "AcceptButton" den Button wählen, der beim Klick auf Enter ausgelöst werden soll. Wenn es auch neben Enter über weitere Tasten gehen soll, dann nimm das Key-Up Ereignis des jeweiligen Elements.