2 Stimmen

Warum erhalte ich doppelte Aufrufe der Funktion previewKeyDown() in c#

Ich verwende die Funktion previewKeyDown() für einige Steuerelemente in meinem Projekt, aber sie werden immer zweimal für jeden Tastendruck aufgerufen. Weiß jemand, wie man dieses Problem lösen kann?

Und gibt es eine Möglichkeit, einen globalen Keylistener in meinem Projekt zu verwenden?

4voto

Blake Punkte 56

Das WebBrowser-Steuerelement hat meiner Meinung nach einen Fehler, es feuert zweimal, egal was. Ich habe das Problem durch einen Hack gelöst, aber es funktioniert :) Mines in VB, aber Sie erhalten die Quintessenz davon, im Grunde machen ein bool in Ihrem Formular Umfang und verwenden Sie es, um eines der beiden Ereignisse, die abgefeuert werden zu negieren:

    Private _skipPreviewKeyDown As Boolean = False
Private Sub WebBrowser1_PreviewKeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.PreviewKeyDownEventArgs) Handles WebBrowser1.PreviewKeyDown

    If _skipPreviewKeyDown = True Then
        _skipPreviewKeyDown = False
        Exit Sub
    Else
        _skipPreviewKeyDown = True
    End If

    'Select Case e.KeyDa
    MsgBox(e.KeyValue)

End Sub

0voto

Versuchen Sie stattdessen, das Ereignis KeyUp zu verwenden. Ich denke, die Tastenwiederholung verursacht Ihr Problem.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X