Tastendruck soll Ereignis auslösen

  • VB.NET

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Tastendruck soll Ereignis auslösen

    Hallo Leute.

    Wollte mal fragen wie es möglich wäre per Tastendruck ein Ereignis auszufürhen z.B. das Programm zu schließen oder einen Timer zu stopen usw...
    Bzw. wie kann man einstellen das eine Taste das Ereignis eines Button ausführt.

    Meine jetzt aber nicht mit Accept Button oder wie das heißt, sondern irgendwelche Tasten. Ich möchte zum Beispiel die F9 - F12 Tasten verwenden um bestimmte Ereignise von Buttons auszulösen.

    Danke im Voraus

    Lg Devilos
    Das geht relativ einfach:
    suche in deinen Formeigenschaften nach Keypreview und setze es aus true. Das sorgt dafür, dass auch Tastendrücke weitergeleitet werden, wenn ein Steuerelement auf deiner Form aktiviert ist.
    suche nun in den Form-Ereignissen in der Rubrik Taste nach Keydown und mache einen Doppelklick in das leere Feld rechts daneben.

    Es wird automatisch eine Sub erstellt in die du jetze mal z.B. folgendes eintippst:

    VB.NET-Quellcode

    1. Private Sub Form1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
    2. Me.Text = e.KeyCode.ToString'Hier wird dir die Tastenbezeichnung als Klartext im Formtitel angezeigt.
    3. End Sub


    Mit dem einfachen Beispiel kannst du testen, welche Tasten erkannt werden und welche z.B. nicht (Pfeiltasten werden z.B. nur dann als Event gefeuert, wenn kein Steuerelement aktiv ist, aber auch da gibs Abhilfe, die jetzt aber nich zum Thema gehört)

    Fiel Fergnügen

    Vatter
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:

    Seilgeist schrieb:

    Müsste gehen oder ?

    Ne.
    Wo bitte fragst du bei deinem Kot die aktuell gedrückte Taste ab? Dazu mußt du schon das Eventargs (e) abfragen, obs der gewünschten Taste entspricht. Deins is so " If Wetter Then is ja alles gut"
    Bitte vor dem Posten überlegen und nicht noch Anfänger mit solchem unüberlegten Kram in die Irre führen. Eine Erklärung, warum und wieso dies und des so is, ist hilfreicher.
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:

    Vatter schrieb:

    Seilgeist schrieb:

    Müsste gehen oder ?

    Ne.
    Wo bitte fragst du bei deinem Kot die aktuell gedrückte Taste ab? Dazu mußt du schon das Eventargs (e) abfragen, obs der gewünschten Taste entspricht. Deins is so " If Wetter Then is ja alles gut"
    Bitte vor dem Posten überlegen und nicht noch Anfänger mit solchem unüberlegten Kram in die Irre führen. Eine Erklärung, warum und wieso dies und des so is, ist hilfreicher.

    Also ich habe es grad mal ausprobiert, und es klappt.
    Was genau ist den "falsch" ?
    Bei

    VB.NET-Quellcode

    1. If Keys.DEINETASTE


    wird die doch die gedrückte Taste abgefragt ...
    Nein.
    Es gibt eine Enumaration namens Keys. Die enthält alle verfügbaren Keykodes. Deine Abfrage könnte genauso heißen If "Klaus" Then. Du kannst des ja ma testen...
    If erwartet einen Boolschen Ausdruck. Eine Enumeration ist für gewöhnlich ein Integer und ein String, die hier miteinander verknüpft werden. Keys.DeineTaste ist dem Zufolge kein boolscher Ausdruck. Würdest du mit Option Strict On programmieren, hättest du das schon angezeigt bekommen. darum: IMMER Strict On programmieren. Am besten in den Anwendungsoptionen fest einstellen.

    Also nochmal: Du mußt die aktuelle Taste, die dir mit e.Keycode übergeben wird mit Keys.DeineTaste vergleichen, dann wird ein Schuh dadraus.
    "If e.Keycode = Keys.F1 Then" ist demzufolge die einzig mögliche Option.

    Übrigens: Mit dem hier kannst du auch tastenkombis abfragen:

    VB.NET-Quellcode

    1. If e.Control And e.KeyCode = Keys.B Then
    2. MessageBox.Show("Strg und B gedrückert!")
    3. End If


    Fiel Fergnügen

    Vatter
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:

    Devilos schrieb:

    Hab beide ausprobiert, und beide funktionieren, auch Seilgeist seine.

    Du must noch lernen, guten Code von schlechtem Code zu unterscheiden. Lies Dir doch mal die einzelnen Beiträge durch, dann solltest Du eigentlich erkennen, dass Vatter die richtigen Argumente rüberbringt.
    Wenn Du dereinst das programieren gelernt haben willst, solltest Du beizeiten damit anfangen.
    In diesem Sinne

    Vatter schrieb:

    Fiel Fergnügen
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hallo,

    Ich weiß, dass dieses Thema schon einige Jahre alt ist, dennoch habe ich eine Frage. :D

    Ich habe nun einen Timer mit dem Druck auf die Leertaste gestartet:


    VB.NET-Quellcode

    1. Private Sub Form1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
    2. If e.Control And e.KeyCode = Keys.Space Then
    3. Timer1.Start()
    4. End If
    5. End Sub



    Könnte mir nun jemand schreiben, wie ich nun den Timer mit einem weiteren Druck auf die Leertaste stoppen kann ? :D


    Vielen Dank <3

    ~Schw3inebraten
    @Schw3inebraten Willkommen im Forum. :thumbup:

    Dksksm schrieb:

    VB.NET-Quellcode

    1. If Timer1.Enabled Then
    oder gleich richtig:

    VB.NET-Quellcode

    1. Timer1.Enabled = Not Timer1.Enabled
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!