Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Pourquoi Keys.Direction déplace le Focus ?

2 réponses
Avatar
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=False.

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.

2 réponses

Avatar
Gilles TOURREAU
Le Fri, 30 Nov 2007 08:23:07 +0100, Jean-Noël
a écrit:

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
Avatar
Jean-Noël
C'est "presque" magique et j'ai appris quelque chose de plus.
Un grand Merci, en tout cas et excellente journée.

"Gilles TOURREAU" a écrit dans le message de news:

Le Fri, 30 Nov 2007 08:23:07 +0100, Jean-Noël
a écrit:

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