OVH Cloud OVH Cloud

comprend pas !

1 réponse
Avatar
Titeuf [VB.Net 2005]
Bonjour,
Je suis sous vb2005 et il y a quelques chose que je ne saisis pas. Dans
l'évènement suivant si je passe Char.IsDigit = true j'ai accès uniquement
aux lettres les chiffres sont ignorés. Sa devrait etre l'inverse non ?

Private Sub TextBox0604_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles TextBox0604.KeyPress,
TextBox0605.KeyPress, TextBox0606.KeyPress, TextBox0607.KeyPress,
TextBox0608.KeyPress, TextBox0609.KeyPress

'autorise uniquement les chiffres
If Char.IsDigit(e.KeyChar) = False Then e.Handled = True

End Sub

1 réponse

Avatar
Patrick Philippot
Bonjour,

Titeuf [VB.Net 2005] wrote:
Je suis sous vb2005 et il y a quelques chose que je ne saisis pas.
Dans l'évènement suivant si je passe Char.IsDigit = true j'ai accès
uniquement aux lettres les chiffres sont ignorés. Sa devrait etre
l'inverse non ?



Votre exemple n'est pas en phase avec ce que vous dîtes ci-dessus. Vous
testez si IsDigit retourne True ou False?

En tous cas, ça fonctionne normalement. e.Handled = True indique que
l'événement a été traité et que le caractère doit donc être ignoré
(c-à-d que l'event ne sera pas propagé plus loin). La doc explique ça
clairement, je pense. L'exemple de la doc indique sans ambiguité que
l'on met Handled à True pour ignorer le caractère qui vient d'être
entré.

'autorise uniquement les chiffres
If Char.IsDigit(e.KeyChar) = False Then e.Handled = True



If Not Char.IsDigit(e.KeyChar)

Tester = True ou = False sur les booléens ou les fonctions qui
retournent un booléen, ça fait beaucoup de caractères que l'on pourrait
également ignorer :-))) . Écrire simplement

If Not Char.IsDigit(e.KeyChar)

ou

If Char.IsDigit(e.KeyChar)

C'est plus facile à lire que la syntaxe que vous utilisez et cela évite
les bugs dûs aux double négations.

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr