Ne pas vérifié les champs quand on fait "Annuler"

Signaler
Messages postés
10
Date d'inscription
mercredi 25 juillet 2007
Statut
Membre
Dernière intervention
24 novembre 2008
-
Messages postés
10
Date d'inscription
mercredi 25 juillet 2007
Statut
Membre
Dernière intervention
24 novembre 2008
-
Bonjour,

Je suis nouveau en VB.NET .
J'ai une form avec plusieur textbox dont je vérifie la saisie sur les evenements "validating", mais j'aimerais ne pas faire ces vérifications quand l'utilisateur clic sur le bouton "Annuler"
j'ai essayé de metre la propriété "CausesValidation=false" du bouton "Annuler" mais sans resultat.
 
Pouver vous m'aider ?
merci.

17 réponses

Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,
Je ne sais pas si .NET propose quelque chose de plus "propre"

Mais tu peux mémoriser le Click sur Annuler dans un Boolean et sortir des événement Validating si le boolean est TRUE

Voilà l'idée.!

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
de quel bouton 'annuler' parles tu ?
d'une msgbox perso ?
Messages postés
10
Date d'inscription
mercredi 25 juillet 2007
Statut
Membre
Dernière intervention
24 novembre 2008

Je parle du bouton "Annuler" de ma form, qui me permet de la fermer.
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
le causesvalidation=true va faire que le champ que tu quitte (focus) est validé (ou non)

un solution serait de déclencher toi même la validation (Me.ValidateChildren) lorsque tu cilques sur le bouton Ok du formulaire
Messages postés
10
Date d'inscription
mercredi 25 juillet 2007
Statut
Membre
Dernière intervention
24 novembre 2008

voila ma form
Messages postés
10
Date d'inscription
mercredi 25 juillet 2007
Statut
Membre
Dernière intervention
24 novembre 2008

Merci,
 mais j'aimerais que la vérification du textbox "date" (par exemple) soit fait à la sortie du champ, quand on passe au champ suivant ou quand on clique sur le bouton "OK" et c'est seulement quand on clique sur "Annuler" que je ne vérifie rien.
C'est à dire que même si le champ date est érroné je puisse sortir de ma form.
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
possible de tester quel bouton a pris le focus...

Private Sub TextBox1_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles TextBox1.Validating
If Me.ActiveControl IsNot BtnCancel Then
e.Cancel TextBox1.Text.Length 0
End If
End Sub

Private Sub TextBox2_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles TextBox2.Validating
If Me.ActiveControl IsNot BtnCancel Then
e.Cancel TextBox2.Text.Length 0
End If
End Sub

Private Sub BtnCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnCancel.Click
Me.Close()
End Sub
Messages postés
10
Date d'inscription
mercredi 25 juillet 2007
Statut
Membre
Dernière intervention
24 novembre 2008

ca ne marche pas car "me.ActiveControl" fait toujours référence au textbox dans l'événement "validating" et non au bouton "Annuler"
Messages postés
918
Date d'inscription
vendredi 3 août 2007
Statut
Membre
Dernière intervention
27 octobre 2008
10
Après quelques test, il semble qu'il faille ajouter ceci ....
e.Cancel = False
dans l'evt FormClosing de la form.
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
ca fonctionne, je l'ai testé....
par contre, il faut bien évidemment spécifier que le bouton BtnCancel ne doit pas déclencher de Validation.....
donc son CausesValidation est à False
Messages postés
10
Date d'inscription
mercredi 25 juillet 2007
Statut
Membre
Dernière intervention
24 novembre 2008

Merci, mais j'ai déja essayé.
ce code marche que si on clique sur la croix rouge de la fernetre ou alt+F4 mais pas si l'on utilise un bouton "Annuler" de la form
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
je viens de retester mon code (j'ai tout retapé et recréé ma Form)
ca fonctionne pourtant bel et bien...

je donne le focus a TextBox1, je n'y saisie rien, et je quitte la form en pressant tranquillement BtnCancel...

(je le répète, BtnCancel.CausesValidation = False)


Private Sub TextBox1_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles TextBox1.Validating
If Me.ActiveControl Is BtnCancel Then
If TextBox1.Text.Length = 0 Then
MessageBox.Show("TextBox1 n'est pas renseigné")
e.Cancel = True
End If
End If
End Sub

Private Sub TextBox2_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles TextBox2.Validating
If Me.ActiveControl Is BtnCancel Then
If Not IsNumeric(TextBox1.Text) Then
MessageBox.Show("TextBox2 doit contenir un numérique")
e.Cancel = True
End If
End If
End Sub

Private Sub BtnCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnCancel.Click
Me.Close()
End Sub
Messages postés
10
Date d'inscription
mercredi 25 juillet 2007
Statut
Membre
Dernière intervention
24 novembre 2008

Je vien de tester t'on code est il y à un petit problême car tu test (par exemple)si le "textbox1.text.lenght=0" que si le controle actif est "BtnCancel" ce qui n'est jamais le cas.
"If Me.ActiveControl Is BtnCancel Then "

Tu peut fermer la fenetre mais tu ne controle rien dans tes champs.

merci.
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
IsNot, pardon, au lieu de Is

j'ai fait un changement de dernière minute ^^
Messages postés
10
Date d'inscription
mercredi 25 juillet 2007
Statut
Membre
Dernière intervention
24 novembre 2008

Super ça marche, mais je vais être un peu pénible.


Si l'on ajout le parametre suivant à la form:
me.CancelButton="BtnCancel"
pour que le bouton "Annuler" soit exécuté en appuyant sur Esc ca ne marche plus.


 
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
galère, les Validations 'automatisées'.... pourquoi ne pas le faire 'a la main' : sur le LostFocus ou BtnOk_click, valider les infos rentrées...
Messages postés
10
Date d'inscription
mercredi 25 juillet 2007
Statut
Membre
Dernière intervention
24 novembre 2008

Je vien de faire plein de test et grosse galére pour faire avec "validating"
merci pour les infos