Pourquoi Keys.Direction déplace le Focus ?

Le
Jean-Noël
Bonjour,
J'intercepte les évènements KeyPress, KeyDown avec un
system.windows.form.Control que j'ai ajouté sur une Form. Le
Form.KeyPreviewúlse.

Les touches de direction ne déclenchent pas KeyDown, mais déplacent le focus
sur les autres control de la feuille, comme la touche TAB. Les autres
touches sont pourtant bien détectées : PgUP, PgDN, Insert, etc.

J'aimerai détecter ces touches dans le Keydown.
Quelqu'un sait-il ce qui se passe ?

Voici le code pour test:
'Un nouveau control pour ma feuille

Private WithEvents MyCTRL As New Control

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click

'J'ajoute un control sur ma feuille

Me.Controls.Add(MyCTRL)

MyCTRL.Location = New Point(50, 50)

MyCTRL.Size = New Size(100, 100)

MyCTRL.BackColor = Color.Azure

MyCTRL.Visible = True

MyCTRL.Focus()

End Sub



Private Sub MyCTRL_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles MyCTRL.Click

'Je redonne le Focus à mon control, car il

'le perd avec les flèches de direction.

MyCTRL.Focus()

End Sub

Private Sub MyCTRL_KeyDown(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyEventArgs) Handles MyCTRL.KeyDown

Beep()

Label1.Text = "Keydown"

End Sub

Private Sub MyCTRL_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles MyCTRL.KeyPress

Beep()

Label1.Text = "Keypress"

End Sub

Merci.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Gilles TOURREAU
Le #12226731
Le Fri, 30 Nov 2007 08:23:07 +0100, Jean-Noël

Bonjour,
J'intercepte les évènements KeyPress, KeyDown avec un
system.windows.form.Control que j'ai ajouté sur une Form. Le
Form.KeyPreviewúlse.

Les touches de direction ne déclenchent pas KeyDown, mais déplacent le
focus
sur les autres control de la feuille, comme la touche TAB. Les autres
touches sont pourtant bien détectées : PgUP, PgDN, Insert, etc.

J'aimerai détecter ces touches dans le Keydown.
Quelqu'un sait-il ce qui se passe ?

Voici le code pour test:
'Un nouveau control pour ma feuille

Private WithEvents MyCTRL As New Control

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click

'J'ajoute un control sur ma feuille

Me.Controls.Add(MyCTRL)

MyCTRL.Location = New Point(50, 50)

MyCTRL.Size = New Size(100, 100)

MyCTRL.BackColor = Color.Azure

MyCTRL.Visible = True

MyCTRL.Focus()

End Sub



Private Sub MyCTRL_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles MyCTRL.Click

'Je redonne le Focus à mon control, car il

'le perd avec les flèches de direction.

MyCTRL.Focus()

End Sub

Private Sub MyCTRL_KeyDown(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyEventArgs) Handles MyCTRL.KeyDown

Beep()

Label1.Text = "Keydown"

End Sub

Private Sub MyCTRL_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles MyCTRL.KeyPress

Beep()

Label1.Text = "Keypress"

End Sub

Merci.





Voilà qui est beaucoup plus clair...

En fait par défaut les touches Down et Up sont interceptées par Control,
mais elle ne déclenche pas les événement KeyDown (tout simplement parceque
par défaut sous Windows la touche Up et Down fait passer le focus à un
autre contrôle).

Si vous souhaitez traiter cette touche comme une saisie normale, traiter
l'événement PreviewKeyDown, et dans la méthode traitant cette événement,
si vous obtenez la touche Up ou Down affectez True à e.IsInputKey = True.
Vous considérez ainsi que les touches Up et Down sont des touches de
"saisies normales" et elles déclencheront l'événement KeyDown, KeyPress et
KeyUp...

Cordialement

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
Jean-Noël
Le #12226681
C'est "presque" magique et j'ai appris quelque chose de plus.
Un grand Merci, en tout cas et excellente journée.

"Gilles TOURREAU"
Le Fri, 30 Nov 2007 08:23:07 +0100, Jean-Noël

Bonjour,
J'intercepte les évènements KeyPress, KeyDown avec un
system.windows.form.Control que j'ai ajouté sur une Form. Le
Form.KeyPreviewúlse.

Les touches de direction ne déclenchent pas KeyDown, mais déplacent le
focus
sur les autres control de la feuille, comme la touche TAB. Les autres
touches sont pourtant bien détectées : PgUP, PgDN, Insert, etc.

J'aimerai détecter ces touches dans le Keydown.
Quelqu'un sait-il ce qui se passe ?

Voici le code pour test:
'Un nouveau control pour ma feuille

Private WithEvents MyCTRL As New Control

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click

'J'ajoute un control sur ma feuille

Me.Controls.Add(MyCTRL)

MyCTRL.Location = New Point(50, 50)

MyCTRL.Size = New Size(100, 100)

MyCTRL.BackColor = Color.Azure

MyCTRL.Visible = True

MyCTRL.Focus()

End Sub



Private Sub MyCTRL_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles MyCTRL.Click

'Je redonne le Focus à mon control, car il

'le perd avec les flèches de direction.

MyCTRL.Focus()

End Sub

Private Sub MyCTRL_KeyDown(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyEventArgs) Handles MyCTRL.KeyDown

Beep()

Label1.Text = "Keydown"

End Sub

Private Sub MyCTRL_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles MyCTRL.KeyPress

Beep()

Label1.Text = "Keypress"

End Sub

Merci.





Voilà qui est beaucoup plus clair...

En fait par défaut les touches Down et Up sont interceptées par Control,
mais elle ne déclenche pas les événement KeyDown (tout simplement parceque
par défaut sous Windows la touche Up et Down fait passer le focus à un
autre contrôle).

Si vous souhaitez traiter cette touche comme une saisie normale, traiter
l'événement PreviewKeyDown, et dans la méthode traitant cette événement,
si vous obtenez la touche Up ou Down affectez True à e.IsInputKey = True.
Vous considérez ainsi que les touches Up et Down sont des touches de
"saisies normales" et elles déclencheront l'événement KeyDown, KeyPress et
KeyUp...

Cordialement

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr


Publicité
Poster une réponse
Anonyme