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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
Le Fri, 28 Sep 2007 14:25:26 +0200, Gilbert Tordeur
<gilbert.tordeur@jci.com> 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
gilles.tourreau@pos.fr
S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
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