Tastaturabfrage immer doppelt

Rockstady11

Mitglied
Hallo,

ich habe ein Problem und zwar mit der Tastaturabfrage. Diese wird komischerweise (zumindest für mich) immer doppelt aufgerufen.

Hier mal der Code:

Code:
Public Class Form2
    Dim Zähler As Integer
    Protected Overrides Function IsInputKey(ByVal keyData As System.Windows.Forms.Keys) As Boolean

        Select Case keyData

            Case Keys.Left
                Zähler += 1
                Label1.Text = Zähler
        End Select

    End Function
End Class

Was ich damit meine, nach einmal drücken steht im Label1 der Wert "2" drin und nicht "1", usw. Wenns funktioniert, muss damit wesentlich mehr gesteuert werden, also es bringt mir jetzt nicht, wenn ich aus dem Zähler ein Double mache und jedes mal 0.5 addiere.

Würde mich freuen, wenn mir jemand helfen kann, danke.

Mfg Rockstady
 
Falsches Forum!

Das is VB.Net

Wieso haben die Admins ein eigenes VB.Net-Forum eingerichtet, wenn doch wieder alle Posts bei uns VB6-Oldies landen? :mad:
 
Ja, sorry.

Vielleicht kann mir hier trotzdem einer helfen, weil ich den Fehler eher in der Semantik als in der Syntax vermute.
 
Also ich kann nur spekulieren!

wird die komplette Funktion wirklich 2 mal aufgerufen, oder wird nur der Zähler/das Label falsch berechnet?
 
Die komplette Funktion wird 2-mal aufgerufen. Wenn ich eine If-Abfrage reinschreibe, bei der die sich eine Boolean auf true bzw. false setzt, passiert praktisch auch nichts, weil es 2-mal aufgerufen wird und somit es true und wieder false gesetzt wird.
 
Also, ohne VB.Net zu kennen klingt diese Funktion wie eine zusammengesetzte KeyDown und KeyUp-Funktion aus VB6.

Erster Trigger bei KeyDown, zweiter Trigger bei KeyUp.

Bietet VB.Net noch irgendwelche anderen Key-Steuerungsfunktionen an? So etwas wie KeyPress in VB6?
 
Ja, KeyPress gibts:

Code:
    Private Sub Form1_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles MyBase.KeyPress

    End Sub

Tja, stellt sich halt nur die Frage, was ich da jetzt reinschreibe bzw. wie ich einzelne Tasten anspreche.

Vielen Dank schonmal für deine Hilfe.
 
Ja, KeyPress gibts:

Code:
    Private Sub Form1_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles MyBase.KeyPress

    End Sub

Tja, stellt sich halt nur die Frage, was ich da jetzt reinschreibe bzw. wie ich einzelne Tasten anspreche.

Vielen Dank schonmal für deine Hilfe.

Also ich würde mein Geld auf "ByVal e As System.Windows.Forms.KeyPressEventArgs" setzen. Was sagt die VB.Net-Doku über das "KeyPressEventArgs" aus?
 
Hallo, versuch´s mal so:
Visual Basic:
Public Class Form1

    Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
        If e.KeyCode = Keys.Left Then
            Static Zähler As Integer
            Zähler += 1
            Me.Label1.Text = Zähler
        End If
    End Sub

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Me.KeyPreview = True
    End Sub

End Class
 
Da es sich um eine .Net Sprache handelt würde ich es sehr schätzen wenn Ihr dies im .Net Forum besprechen würdet, da es erstens andere dazu anleitet den gleichen Fehler zu begehen und zweitens ja eher zu ratespielen anregt als zu vernünftigen Lösungen da alle nur schreiben "ich glaube in .net ist es so"

Grüsse bb
 

Neue Beiträge

Zurück