Probleme mit KeyPreview bei MDIChild

Joi1981

Mitglied
Hallo Leute,

ich habe ein Problem mit der KeyPreview-Methode in meinem Projekt.

Hier der Code:

Private Sub Form_Load()
Me.KeyPreview = True
End Sub

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case vbKeyDown
Unten
Case vbKeyUp
Oben
Case vbKeyRight
Rechts
Case vbKeyLeft
Links
End Select
End Sub

Sub Unten()
MsgBox "Pfeiltaste nach unten wurde gedrückt"
End Sub

Sub Oben()
MsgBox "Pfeiltaste nach oben wurde gedrückt"
End Sub

Sub Rechts()
MsgBox "Pfeiltaste nach rechts wurde gedrückt"
End Sub

Sub Links()
MsgBox "Pfeiltaste nach links wurde gedrückt"
End Sub


Das ganze funktioniert leider nur auf einer Standard-Form und auch nur dann wenn keine Steuerelemente auf der Form sind, trotz aktivierter KeyPreview-Eigenschaft.

Ebenso funktioniert es nicht wenn es sich um eine MDIChild-Form handelt (wohl aus den selben Gründen?)

Nur wenn ich den Fokus und den Tab immer auf der Titelleiste der Form habe, funktioniert es. Weiß jemand Rat. (Betrifft Win2K & XP)

Danke, Gruß
Jochen
 
In einem MDI Projekt landen die Key - Ereignisse alle nur auf der MDI Form also kannst du hier die Ereignisse abfangen und dann an dein Aktives Child senden.

Anders geht es nicht soweit ich weiß.

Meine Standardformen hatten das KeyDown Ereignis trotz Controls.
Das Hauptproblem ist aber das eventuell ein anderes Control ( z.B. eine Textbox) den Focus hat und darauf reagiert und dann nicht weiterleitet.

Grüsse bb
 
@brainbyte:
Danke für die schnelle Antwort.

Hmm. Ist dann also sehr unzuverläßig das ganze mit der KeyPreview.
Besonders bei MDIChilds. Da werd ich ein bisschen ausprobieren und rumbasteln müssen.

Aber vielen Dank für die Informationen. Jetzt weiss ich wenigsten in welche Richtung ich testen muss...bzw. wie sich die KeyPreview-Eigenschaft in Verbindung mit MDIChilds verhält.

Gruß
Jochen
 
Zurück