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

DataGridView.KeyPress

6 réponses
Avatar
Annie L.
Voici ma méthode pour gérer les touches frappées du clavier pour accepter
seulement les chiffres numériques dans un TEXTBOX...

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

Verifier_ChampNumerique(Me.txtPrixCoutant, e)

End Sub


Public Sub Verifier_ChampNumerique(ByVal objNomControle As System.Object,
ByVal eHandles As System.Windows.Forms.KeyPressEventArgs)

If InStr("0123456789", eHandles.KeyChar) = 0 Then eHandles.Handled = True

End Sub

Cela fonctionne très bien !!!

Ce que je voudrais c'est faire la même chose dans une cellule dans un
DataGridView !!!
M. Tourreau a déjà parlé de "DataGridView.EditingControl"
J'aimerais avoir un exemple comment l'employer car j'ai beau chercher, je
n'ai pas trouvé un exemple concret et simple!!

Est-ce quelqu'un a déjà employé une méthode pour valider une frappe du
clavier dans une cellule d'un DataGridView ???

Merci de vos réponses!

6 réponses

Avatar
Gilles TOURREAU [MVP]
"Annie L." a écrit dans le message de
news:
Voici ma méthode pour gérer les touches frappées du clavier pour accepter
seulement les chiffres numériques dans un TEXTBOX...

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

Verifier_ChampNumerique(Me.txtPrixCoutant, e)

End Sub


Public Sub Verifier_ChampNumerique(ByVal objNomControle As
System.Object,
ByVal eHandles As System.Windows.Forms.KeyPressEventArgs)

If InStr("0123456789", eHandles.KeyChar) = 0 Then eHandles.Handled = True

End Sub

Cela fonctionne très bien !!!

Ce que je voudrais c'est faire la même chose dans une cellule dans un
DataGridView !!!
M. Tourreau a déjà parlé de "DataGridView.EditingControl"
J'aimerais avoir un exemple comment l'employer car j'ai beau chercher, je
n'ai pas trouvé un exemple concret et simple!!

Est-ce quelqu'un a déjà employé une méthode pour valider une frappe du
clavier dans une cellule d'un DataGridView ???

Merci de vos réponses!








Bonjour,

Il suffit de traiter l'événement EditingControlShowing de votre
DataGridView.
Cet événement est déclenché à la création du contrôle permettant la saisie
de l'utilisateur.
Dans cet événement vous pouvez vous brancher à l'événement KeyPress comme
ceci :

AddHandler e.Control.KeyPress, AddressOf MaMéthodeQuiTraiteKeyPress

Cordialement

--
Gilles TOURREAU - MVP C#


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

AddHandler e.Control.KeyPress, AddressOf MaMéthodeQuiTraiteKeyPress
AddHandler e.Control.KeyPress, AddressOf
Verifier_ChampNumerique(Me.txtPrixCoutant, e)

le "e" à la fin génère une erreur :
Une valeur de type
"System.Windows.Forms.DataGridViewEditingControlShowingEventArgs" ne peut pas
être convertie en "System.Windows.Forms.KeyPressEventArgs"

même si je mets le "e" à la fin comme suit e.Control.KeyPress

Vraiment très compliqué !!!!!

Merci!


"Gilles TOURREAU [MVP]" wrote:

"Annie L." a écrit dans le message de
news:
> Voici ma méthode pour gérer les touches frappées du clavier pour accepter
> seulement les chiffres numériques dans un TEXTBOX...
>
> Private Sub txtPrixCoutant_KeyPress(ByVal sender As System.Object, ByVal e
> As System.Windows.Forms.KeyPressEventArgs) Handles
> txtPrixCoutant.KeyPress
>
> Verifier_ChampNumerique(Me.txtPrixCoutant, e)
>
> End Sub
>
>
> Public Sub Verifier_ChampNumerique(ByVal objNomControle As
> System.Object,
> ByVal eHandles As System.Windows.Forms.KeyPressEventArgs)
>
> If InStr("0123456789", eHandles.KeyChar) = 0 Then eHandles.Handled = True
>
> End Sub
>
> Cela fonctionne très bien !!!
>
> Ce que je voudrais c'est faire la même chose dans une cellule dans un
> DataGridView !!!
> M. Tourreau a déjà parlé de "DataGridView.EditingControl"
> J'aimerais avoir un exemple comment l'employer car j'ai beau chercher, je
> n'ai pas trouvé un exemple concret et simple!!
>
> Est-ce quelqu'un a déjà employé une méthode pour valider une frappe du
> clavier dans une cellule d'un DataGridView ???
>
> Merci de vos réponses!
>
>
>
>


Bonjour,

Il suffit de traiter l'événement EditingControlShowing de votre
DataGridView.
Cet événement est déclenché à la création du contrôle permettant la saisie
de l'utilisateur.
Dans cet événement vous pouvez vous brancher à l'événement KeyPress comme
ceci :

AddHandler e.Control.KeyPress, AddressOf MaMéthodeQuiTraiteKeyPress

Cordialement

--
Gilles TOURREAU - MVP C#


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




Avatar
Gilles TOURREAU [MVP]
"Annie L." a écrit dans le message de
news:
Erreur dans la phrase ...

AddHandler e.Control.KeyPress, AddressOf MaMéthodeQuiTraiteKeyPress >
AddHandler e.Control.KeyPress, AddressOf
Verifier_ChampNumerique(Me.txtPrixCoutant, e)



Ce n'est pas un appel de méthode qu'il faut, mais un delegate !


le "e" à la fin génère une erreur :
Une valeur de type
"System.Windows.Forms.DataGridViewEditingControlShowingEventArgs" ne peut
pas
être convertie en "System.Windows.Forms.KeyPressEventArgs"

même si je mets le "e" à la fin comme suit e.Control.KeyPress

Vraiment très compliqué !!!!!

Merci!




Bonsoir,

La syntaxe suivante est correcte :
AddHandler e.Control.KeyPress, AddressOf MaMéthodeQuiTraiteKeyPress

Il faut bien évidemment une méthode comme ceci :
Private Sub MaMéthodeQuiTraiteKeyPress(ByVal sender As System.Object, ByVal
e As System.Windows.Forms.KeyPressEventArgs)

Cordialement

--
Gilles TOURREAU - MVP C#


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
Avatar
Annie L.
Je vais m'essayer de construire quelquechose avec ce que vous me dites mais
j'ai vraiment un gros manque d'expérience, vraiment pas facile!!!

De plus, il faut que je traite de "TextChanged" et de "LostFocus" (fait
partie d'un TextBox). TextChanged = pour éviter de saisir plus d'une fois un
"-" pour les chiffres négatifs et pour éviter de saisir plus d'une fois la
virgule ou le point!

Dans quelle évènements vais-je gérer ceci ???

Et "LostFocus" pour mettre les "zéros" à la fin et pour finaliser le tout !

Tout cela doit être gérer dans un DataGridView!
Je ne suis pas sorti du bois comme on dit......

Merci!

"Gilles TOURREAU [MVP]" wrote:

"Annie L." a écrit dans le message de
news:
> Erreur dans la phrase ...
>
> AddHandler e.Control.KeyPress, AddressOf MaMéthodeQuiTraiteKeyPress > >
> AddHandler e.Control.KeyPress, AddressOf
> Verifier_ChampNumerique(Me.txtPrixCoutant, e)

Ce n'est pas un appel de méthode qu'il faut, mais un delegate !

>
> le "e" à la fin génère une erreur :
> Une valeur de type
> "System.Windows.Forms.DataGridViewEditingControlShowingEventArgs" ne peut
> pas
> être convertie en "System.Windows.Forms.KeyPressEventArgs"
>
> même si je mets le "e" à la fin comme suit e.Control.KeyPress
>
> Vraiment très compliqué !!!!!
>
> Merci!
>

Bonsoir,

La syntaxe suivante est correcte :
AddHandler e.Control.KeyPress, AddressOf MaMéthodeQuiTraiteKeyPress

Il faut bien évidemment une méthode comme ceci :
Private Sub MaMéthodeQuiTraiteKeyPress(ByVal sender As System.Object, ByVal
e As System.Windows.Forms.KeyPressEventArgs)

Cordialement

--
Gilles TOURREAU - MVP C#


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





Avatar
Annie L.
J'ai vérifié et ma procédure est bel et bien construit comme ceci :

Il faut bien évidemment une méthode comme ceci :
> Private Sub MaMéthodeQuiTraiteKeyPress(ByVal sender As System.Object, ByVal
> e As System.Windows.Forms.KeyPressEventArgs)



C'est le "e" à la fin qui ne passe pas !!!


AddHandler e.Control.KeyPress, AddressOf
Verifier_ChampNumerique(Me.txtPrixCoutant, e) <<<<<< ????



"Annie L." wrote:

Je vais m'essayer de construire quelquechose avec ce que vous me dites mais
j'ai vraiment un gros manque d'expérience, vraiment pas facile!!!

De plus, il faut que je traite de "TextChanged" et de "LostFocus" (fait
partie d'un TextBox). TextChanged = pour éviter de saisir plus d'une fois un
"-" pour les chiffres négatifs et pour éviter de saisir plus d'une fois la
virgule ou le point!

Dans quelle évènements vais-je gérer ceci ???

Et "LostFocus" pour mettre les "zéros" à la fin et pour finaliser le tout !

Tout cela doit être gérer dans un DataGridView!
Je ne suis pas sorti du bois comme on dit......

Merci!

"Gilles TOURREAU [MVP]" wrote:

> "Annie L." a écrit dans le message de
> news:
> > Erreur dans la phrase ...
> >
> > AddHandler e.Control.KeyPress, AddressOf MaMéthodeQuiTraiteKeyPress > > >
> > AddHandler e.Control.KeyPress, AddressOf
> > Verifier_ChampNumerique(Me.txtPrixCoutant, e)
>
> Ce n'est pas un appel de méthode qu'il faut, mais un delegate !
>
> >
> > le "e" à la fin génère une erreur :
> > Une valeur de type
> > "System.Windows.Forms.DataGridViewEditingControlShowingEventArgs" ne peut
> > pas
> > être convertie en "System.Windows.Forms.KeyPressEventArgs"
> >
> > même si je mets le "e" à la fin comme suit e.Control.KeyPress
> >
> > Vraiment très compliqué !!!!!
> >
> > Merci!
> >
>
> Bonsoir,
>
> La syntaxe suivante est correcte :
> AddHandler e.Control.KeyPress, AddressOf MaMéthodeQuiTraiteKeyPress
>
> Il faut bien évidemment une méthode comme ceci :
> Private Sub MaMéthodeQuiTraiteKeyPress(ByVal sender As System.Object, ByVal
> e As System.Windows.Forms.KeyPressEventArgs)
>
> Cordialement
>
> --
> Gilles TOURREAU - MVP C#
>
>
> S.A.R.L. P.O.S
> Le spécialiste en motoculture depuis + de 30 ans !
> http://www.pos.fr
>
>
>


Avatar
Annie L.
Ne cherchez plus, j'ai TROUVÉ !!!!!

allez sur ce site : http://cyrilhome.over-blog.net/article-12619641.html

tout y est même la saisie d'un point ou virgule une seule fois !

Merci ! problème résolu

"Annie L." wrote:

J'ai vérifié et ma procédure est bel et bien construit comme ceci :

Il faut bien évidemment une méthode comme ceci :
> > Private Sub MaMéthodeQuiTraiteKeyPress(ByVal sender As System.Object, ByVal
> > e As System.Windows.Forms.KeyPressEventArgs)

C'est le "e" à la fin qui ne passe pas !!!


AddHandler e.Control.KeyPress, AddressOf
Verifier_ChampNumerique(Me.txtPrixCoutant, e) <<<<<< ????



"Annie L." wrote:

> Je vais m'essayer de construire quelquechose avec ce que vous me dites mais
> j'ai vraiment un gros manque d'expérience, vraiment pas facile!!!
>
> De plus, il faut que je traite de "TextChanged" et de "LostFocus" (fait
> partie d'un TextBox). TextChanged = pour éviter de saisir plus d'une fois un
> "-" pour les chiffres négatifs et pour éviter de saisir plus d'une fois la
> virgule ou le point!
>
> Dans quelle évènements vais-je gérer ceci ???
>
> Et "LostFocus" pour mettre les "zéros" à la fin et pour finaliser le tout !
>
> Tout cela doit être gérer dans un DataGridView!
> Je ne suis pas sorti du bois comme on dit......
>
> Merci!
>
> "Gilles TOURREAU [MVP]" wrote:
>
> > "Annie L." a écrit dans le message de
> > news:
> > > Erreur dans la phrase ...
> > >
> > > AddHandler e.Control.KeyPress, AddressOf MaMéthodeQuiTraiteKeyPress > > > >
> > > AddHandler e.Control.KeyPress, AddressOf
> > > Verifier_ChampNumerique(Me.txtPrixCoutant, e)
> >
> > Ce n'est pas un appel de méthode qu'il faut, mais un delegate !
> >
> > >
> > > le "e" à la fin génère une erreur :
> > > Une valeur de type
> > > "System.Windows.Forms.DataGridViewEditingControlShowingEventArgs" ne peut
> > > pas
> > > être convertie en "System.Windows.Forms.KeyPressEventArgs"
> > >
> > > même si je mets le "e" à la fin comme suit e.Control.KeyPress
> > >
> > > Vraiment très compliqué !!!!!
> > >
> > > Merci!
> > >
> >
> > Bonsoir,
> >
> > La syntaxe suivante est correcte :
> > AddHandler e.Control.KeyPress, AddressOf MaMéthodeQuiTraiteKeyPress
> >
> > Il faut bien évidemment une méthode comme ceci :
> > Private Sub MaMéthodeQuiTraiteKeyPress(ByVal sender As System.Object, ByVal
> > e As System.Windows.Forms.KeyPressEventArgs)
> >
> > Cordialement
> >
> > --
> > Gilles TOURREAU - MVP C#
> >
> >
> > S.A.R.L. P.O.S
> > Le spécialiste en motoculture depuis + de 30 ans !
> > http://www.pos.fr
> >
> >
> >