VB 2010 Keys öfters drücken? :D

  • VB.NET

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

    VB 2010 Keys öfters drücken? :D

    Moin,

    also ich wollte ein kleines Menü programmieren, in dem man mit den Tasten W und S navigieren kann. Ich habe das jetzt mithilfe eines Timers und ner Integer-Variable gelöst. Also die Variable, hier "wahl", steht standardmäßig auf 0 und soll bei drücken von S um eins erhöht werden und bei W um eins verringt und der Timer stellt dann anhand des wertes von "wahl" fest welches Feld er als angewählt darstellt. Soweit die Theorie, kommen wir nun zu meinem Problem :D

    Wenn ich das erste mal S drücke klappt soweit alles wie gewollt, "wahl" wird um eins erhöht und das erste Feld wird als aktiviert dargestellt. Aber wenn ich nun ein zweites mal S drücke, passiert nichts, "wahl" wird nicht erhöht und auch kein neues Feld als aktiviert dargestellt.
    Also muss ich vorher noch iwie aktivieren das man die Taste öfters drücken kann oder so? :D KeyPreview ist auf true :D

    Hier erstmal der Quellcode:


    Quellcode

    1. Private Sub Form2_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
    2. If e.KeyCode = Keys.Escape Then
    3. Me.Close()
    4. End If
    5. If e.KeyCode = Keys.S Then
    6. If Not wahl >= 4 Then
    7. wahl = +1
    8. ElseIf wahl = 4 Then
    9. wahl = 1
    10. End If
    11. End If
    12. If e.KeyCode = Keys.W Then
    13. If Not wahl = 4 Then
    14. wahl = -1
    15. ElseIf wahl = 4 Then
    16. wahl = 1
    17. End If
    18. End If



    PS: Ka ob das die richtige Kategorie für den Post ist, sry wenn ned :D

    *Topic verschoben*

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    versuch mal += -1
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."
    Da habe ich wohl den Fehler überlesen, den mein Vorposter gefunden hat.
    Also Zeile 9 muss heißen:

    VB.NET-Quellcode

    1. wahl += 1

    und Zeile 17

    VB.NET-Quellcode

    1. wahl -= 1


    Du hast sogar noch einen Copy & Paste Fehler:
    Du solltest die If-Bedingungen bei Taste "W" überdenken.

    Hier mein ursprünglicher Post. Vielleicht hilfts ja auch :)

    Naja, schau dir mal diesen Codeabschnitt bei dir an:

    VB.NET-Quellcode

    1. ... Handles Me.KeyDown


    Das menü bekommt nach dem ersten drücken ja den Fokus. Wenn du nun eine Taste drückst, wird diese Taste quasi auf dem Menü gedrückt und nicht auf der Form.
    Also musst du weitere Handles ergänzen:

    VB.NET-Quellcode

    1. ... Handles Me.KeyDown, MeinMenü.KeyDown, ...

    „Was ich gerade mache? Ich reite Hand in Hand mit dem Matthäus-Effekt auf einer Exponentialfunktion.“ ^^

    DerDon333 schrieb:

    Problem
    Probier mal dies:

    VB.NET-Quellcode

    1. Private Sub Form2_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
    2. If e.KeyCode = Keys.Escape Then
    3. Me.Close()
    4. End If
    5. If e.KeyCode = Keys.S Then
    6. wahl += 1
    7. End If
    8. If e.KeyCode = Keys.W Then
    9. wahl -= 1
    10. End If
    11. wahl = wahl And 3
    12. 'Label1.Text = wahl.ToString
    13. End Sub
    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!