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

KeyPress et DataGridView

1 réponse
Avatar
Gilbert Tordeur
Bonjour.
VB 2005, Windows forms.

Je cherche à empêcher toute autre saisie que des caractères numériques dans
certaines colonnes de ma DataGridView. Pour ce faire, j'ai créé un procédure
pour gérer l'événement KeyPress de la grille.

Le problème est qu'elle ne reçoit pas le contrôle quand je saisis des
caractères dans une cellule. Je n'ai rien mis de spécial au niveau de la
Form (KeyPreview est à False par exemple). D'autres événements de la grille
sont eux bien gérés, par exemple CellBeginEdit.

Pour vérifier, j'ai créé un nouveau projet avec le code exemple fourni par
Microsoft dans la documentation de la classe DataGridView
(ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.fr/cpref32/html/T_System_Windows_Forms_DataGridView.htm)

J'y ai ajouté le code suivant

Private Sub songsDataGridView_KeyPress(ByVal sender As Object, _
ByVal e As System.Windows.Forms.KeyPressEventArgs) _
Handles songsDataGridView.KeyPress
MessageBox.Show("Sub songsDataGridView_KeyPress")
End Sub

et cela ne fonctionne pas mieux : j'ai beau saisir des caractères dans les
cellules, jamais un message n'apparaît.

Est-ce une mauvaise compréhension de ma part ou une erreur de Microsoft ?
Merci de votre aide,
Gilbert

1 réponse

Avatar
Gilles TOURREAU
Le Fri, 28 Sep 2007 14:25:26 +0200, Gilbert Tordeur
a écrit:

Bonjour.
VB 2005, Windows forms.

Je cherche à empêcher toute autre saisie que des caractères numériques
dans
certaines colonnes de ma DataGridView. Pour ce faire, j'ai créé un
procédure
pour gérer l'événement KeyPress de la grille.

Le problème est qu'elle ne reçoit pas le contrôle quand je saisis des
caractères dans une cellule. Je n'ai rien mis de spécial au niveau de la
Form (KeyPreview est à False par exemple). D'autres événements de la
grille
sont eux bien gérés, par exemple CellBeginEdit.

Pour vérifier, j'ai créé un nouveau projet avec le code exemple fourni
par
Microsoft dans la documentation de la classe DataGridView
(ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.fr/cpref32/html/T_System_Windows_Forms_DataGridView.htm)

J'y ai ajouté le code suivant

Private Sub songsDataGridView_KeyPress(ByVal sender As Object, _
ByVal e As System.Windows.Forms.KeyPressEventArgs) _
Handles songsDataGridView.KeyPress
MessageBox.Show("Sub songsDataGridView_KeyPress")
End Sub

et cela ne fonctionne pas mieux : j'ai beau saisir des caractères dans
les
cellules, jamais un message n'apparaît.

Est-ce une mauvaise compréhension de ma part ou une erreur de Microsoft ?
Merci de votre aide,
Gilbert





Ce n'est pas au DataGridView que vous devez brancher l'événement KeyPress,
mais au contrôle DataGridView.EditingControl qu'il héberge au moment de
passer à l'édition...

Sinon, pour plus de souplesse créer une classe qui dérive de DataGridView
et redéfinissez la méthode ProcessKeyMessage à votre goût...

Cordialement

--
Gilles TOURREAU


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