Mehrere Tasten drücken zum öffnen einer Form

  • C#
  • .NET (FX) 4.5–4.8

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

    Du könntest in der Form1_KeyDown-Prozedur Flags setzen und im KeyUp die Flags wieder entfernen, wenn bestimmte Tasten gedrückt werden. Und wenn alle Flags gesetzt sind, dann wird Form2 aufgerufen. Allerdings hatten wir ein ähnliches Problem schon mal besprochen, da scheiterte es daran, dass manche Tastaturen hardwareseitig nicht in der Lage sind, 3 Tasten gleichzeitig zu verarbeiten.
    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.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „VaporiZed“ ()

    VB.NET-Quellcode

    1. ​Dim fClicked As Boolean = False
    2. Dim pClicked As Boolean = False
    3. Dim rClicked As Boolean = False
    4. If (GetAsyncKeyState(70)) Then
    5. fClicked = True
    6. Else
    7. fClicked = False
    8. End If
    9. If (GetAsyncKeyState(80)) Then
    10. pClicked = True
    11. Else
    12. pClicked = False
    13. End If
    14. If (GetAsyncKeyState(82)) Then
    15. rClicked = True
    16. Else
    17. rClicked = False
    18. End If
    19. If fClicked = True And pClicked = True And rClicked = True Then
    20. Timer2.Stop()
    21. MsgBox("Hallo")
    22. Timer2.Start()
    23. End If


    Sowas?
    Wenn ich eine Frage stelle, habe ich sie bereits gegooglet. Ja, es kommt vor, dass ich die Antwort übersehe. Ja, es kommt vor, dass ich sie nicht verstehe. Deshalb bin ich hier. Wenn dies eure Frage war, dann antwortet bitte nicht. Es stiehlt sämtliche Motivation.
    wenn dir Tastenkombinationen mit Shift oder Strg oder Alt reichen (also z. B. shift+alt+Beliebige taste)

    dann im jeweiligen KeyDownEvent :
    Spoiler anzeigen

    VB.NET-Quellcode

    1. If e.Shift And e.Alt And e.KeyCode = Keys.N Then
    2. 'whateveryouwant
    3. End If


    Beachte hierbei bitte, das der Code in jeder Control + Hauptform gesetzt sein muss damit er im gesamten Programm läuft, wenn du es z.B. nur in einem Listbox.KeyDownEvent machst, funktioniert diese Tastenkombi auch nur in dieser Listbox

    also wenn es funktionieren soll wenn du nur die Form selbst ausgewählt hast aber auch wenn eine Listbox gerade den Focus hat oder ein Button:

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Sub All_KeyDown(sender As Object, e As KeyEventArgs) Handles ListBox1.KeyDown, MyBase.KeyDown, Öffnen.KeyDown
    2. If e.Shift And e.Alt And e.KeyCode = Keys.N Then
    3. 'whateveryouwant
    4. End If
    5. End Sub

    ^ funktioniert in beiden Controls oder direkt nur in der hauptform wenn Shift+Alt+N gedrückt sind

    Greets
    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If
    @asusdk Das funktioniert nur mit einer "richtigen" Taste und Steuertasten.
    @Sekki Ziemlich gut. :thumbup:
    Bei mir sähe das so aus:

    VB.NET-Quellcode

    1. Dim fClicked As Boolean = (GetAsyncKeyState(70) = &h8001)
    2. Dim pClicked As Boolean = (GetAsyncKeyState(80) = &h8001)
    3. Dim rClicked As Boolean = (GetAsyncKeyState(82) = &h8001)
    4. If fClicked AndAlso pClicked AndAlso rClicked Then
    5. Timer2.Stop()
    6. MessageBox.Show("Hallo")
    7. Timer2.Start()
    8. End If
    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!