IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

Utilisation de error Provider


Sujet :

Windows Forms

  1. #1
    Membre habitué
    Inscrit en
    Août 2008
    Messages
    1 596
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 1 596
    Points : 175
    Points
    175
    Par défaut Utilisation de error Provider
    Comment puis je vérifier si un champs est numerique ? et s'il est vide ? avec le error^provider ? est ce que je dois créer un errorProvider pour tous les textbox de mon formulaire ou chacun aura un son propre error provider ?

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    ErrorProvider sert seulement à afficher l'erreur, pas à faire la validation. Il suffit que tu en mettes un seul sur la form, pas besoin d'en mettre un par contrôle. C'est très facile à utiliser, regarde dans la doc pour un exemple.

    Pour tester si une valeur est numérique, il y a différentes méthodes...
    Tu peux utiliser Int32.TryParse (pour un entier) ou Double.TryParse (pour un double ou flottant), ou alors tu peux référencer l'assembly Microsoft.VisualBasic pour utiliser la méthode Information.IsNumeric. Ou alors tu peux aussi t'en sortir avec la méthode Convert.ToInt32 (ou Convert.ToDouble), avec un try/catch

  3. #3
    Membre habitué
    Inscrit en
    Août 2008
    Messages
    1 596
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 1 596
    Points : 175
    Points
    175
    Par défaut
    Ok, j'ai pu utilisé le error provider, pour tester si des champs sont numérique (isDigit)ou letter(isLetter), mais j'ai un autre petit soucis par rapport a autre champs qui ne doivent pas etre vide, le error provider ne detetcte pas ca, ce que je compte faire c'est de mettre deux error providers, le premier pour tester la validité des champs avec l'evenement validating, et l'autre au moment de la validation du formulaire pour tester si les champs sont vides ???,

    j'ai un champ qui contient des lettres + nombres + le caractere "/" ? je sais pas si vous avez une idée sur comment puis je vérifier la validité de ce champs ?

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par Msysteme Voir le message
    j'ai un autre petit soucis par rapport a autre champs qui ne doivent pas etre vide, le error provider ne detetcte pas ca, ce que je compte faire c'est de mettre deux error providers, le premier pour tester la validité des champs avec l'evenement validating, et l'autre au moment de la validation du formulaire pour tester si les champs sont vides ???,
    Encore une fois, le ErrorProvider ne détecte rien du tout, il ne sert qu'à l'affichage de l'erreur. Pas la peine d'en créer un 2e pour tester autre chose, tu peux utiliser le même, puisque de toutes façons ce n'est pas lui qui fait le test.

    Pour tester si le champ est vide, utilise la méthode String.IsNullOrEmpty

    Citation Envoyé par Msysteme Voir le message
    j'ai un champ qui contient des lettres + nombres + le caractere "/" ? je sais pas si vous avez une idée sur comment puis je vérifier la validité de ce champs ?
    avec une expression régulière peut-être...

  5. #5
    Membre habitué
    Inscrit en
    Août 2008
    Messages
    1 596
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 1 596
    Points : 175
    Points
    175
    Par défaut
    mais quel evenement je vais utilisé la chaine pour detecter si le champ est vide ?

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par Msysteme Voir le message
    mais quel evenement je vais utilisé la chaine pour detecter si le champ est vide ?
    Sur l'évènement TextChanged par exemple, ou alors lors de la validation du formulaire.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Avril 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Avril 2007
    Messages : 28
    Points : 20
    Points
    20
    Par défaut
    Citation Envoyé par Msysteme Voir le message
    mais quel evenement je vais utilisé la chaine pour detecter si le champ est vide ?
    Bah concrétement l'ERROR Provider comme dit plus haut va te servir par exemple avant un enregistrement a vérifier si tout tes champs sont bien formés ou ne sont pas nulls pour certain si en base les NULLABLES ne sont pas activés.

    Donc tu définit une méthode propre dans le genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    private bool VerificationSaisieObligatoire()
    {
             // Par défaut , le control est négatif
             bool bChange = false;
     
             string sMessage = Properties.Resources.MessageSaisieObligatoire;
     
     
             if (_AmieAdresseLivraison != null && _AmieAdresseLivraison.SelectedIndex < 1)
             {
                ErrorProviderCommande.SetError(CmbAdresseLivraison, sMessage);
             }
             else
             {
                bChange = true;
             }
             return bChange;
    }
    Avec ce booléen tu sauras si tes champs sont bien remplis avec un point d'exclamation rouge près de ton control (Combobox ,TextBox,etc )


  8. #8
    Membre éclairé
    Avatar de shwin
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2003
    Messages : 568
    Points : 777
    Points
    777
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Sur l'évènement TextChanged par exemple, ou alors lors de la validation du formulaire.

    Il faut faire attention pour ce qui est du validating du formulaire. Imagine que jai un bouton Save + Cancel sur mon formulaire. J'ouvre le formulaire pour faire un modification (je vide un champs qui doit pas etre vide lors du save) et que je fait cancel ou que je close le formulaire ... le validating va se faire appelé, et tu va faire un e.cancel = true car il y as un champs qui est vide. Cependant, c'est légal davoir un champs vide car je ne sauvegarde pas, je fait seulement cancellé le formulaire.

    Je te conseil plutot de te faire une méthode Validate() qui est appeler seulement lors du save.
    Remoting Context Matters
    Everything in this chapter is 100 percent undocumented. Reliance on these techniques is not supported by either Microsoft, the publisher, or the author of this book. Use at you own risk! If your computer won't work afterwards, your toaster blows up or your car doesn't start, I assume no liability whatsoever: You're now about to enter the uncharted territories of .NET and you do so on your own risk. I can only provide some guidance

  9. #9
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par shwin Voir le message
    Il faut faire attention pour ce qui est du validating du formulaire. Imagine que jai un bouton Save + Cancel sur mon formulaire. J'ouvre le formulaire pour faire un modification (je vide un champs qui doit pas etre vide lors du save) et que je fait cancel ou que je close le formulaire ... le validating va se faire appelé, et tu va faire un e.cancel = true car il y as un champs qui est vide. Cependant, c'est légal davoir un champs vide car je ne sauvegarde pas, je fait seulement cancellé le formulaire.
    Tout à fait d'accord... mais je ne parlais pas de l'évènement Validating
    Je parlais de la "validation" au sens "quand tu cliques sur OK". Mais c'est vrai que le terme prêtait à confusion...

  10. #10
    Membre habitué
    Inscrit en
    Août 2008
    Messages
    1 596
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 1 596
    Points : 175
    Points
    175
    Par défaut
    jusqu'a maintenant j'ai pas eu les resultat souhaité, mon but c'est de verifier si un champs est vide et qu'il contient un numerique, j'ai reussi a controlet si le champs et numérique avec l'evenement validiting et le error provider mais un champs est vide NONNNNNNNNNNNNNNNNNN, je dois cliquer dans le champs, a ce moment la il le controle sinon si je clique directement sur le boutton valider il appele la methode de sauvegarde : voila ce que j'ai fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    private void textBox1_Validating(object sender, CancelEventArgs e)
            {
                if (textBox1.TextLength == 0)
                {
                    errorProvider1.SetError(textBox1, "Le champ ne doit pas être vide");
                    e.Cancel = true;
                }
                else
                {
                    errorProvider1.SetError(textBox1, null);
                }
            }
     
            private void btnOK_Click(object sender, EventArgs e)
            {
                //méthode de sauvegarde;
            }

  11. #11
    Membre éclairé
    Avatar de shwin
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2003
    Messages : 568
    Points : 777
    Points
    777
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    public partial class Form1 : Form
    	{
    		public Form1()
    		{
    			InitializeComponent();
    		}
     
    		private bool IsDocumentValid()
    		{
    			errorProvider.SetError(textBox1, string.Empty);
    			if (string.IsNullOrEmpty(textBox1.Text))
    			{
    				errorProvider.SetError(textBox1, "Can't be empty");
    				return false;
    			}
     
    			int textboxValue = 0;
    			if (!int.TryParse(textBox1.Text, out textboxValue))
    			{
    				errorProvider.SetError(textBox1, "Must be numeric");
    				return false;
     
    			}
     
    			return true;
    		}
    		private void button1_Click(object sender, EventArgs e)
    		{
    			if (!IsDocumentValid())
    				return;
    		}
    	}
    Je te conseil de revoir tes bases de la programmations car ce que tu demande est montré dans 90% des livres de base dans le chapitre 1.
    Remoting Context Matters
    Everything in this chapter is 100 percent undocumented. Reliance on these techniques is not supported by either Microsoft, the publisher, or the author of this book. Use at you own risk! If your computer won't work afterwards, your toaster blows up or your car doesn't start, I assume no liability whatsoever: You're now about to enter the uncharted territories of .NET and you do so on your own risk. I can only provide some guidance

Discussions similaires

  1. Réponses: 0
    Dernier message: 03/12/2013, 09h16
  2. [Débutant] error provider et boite à outil
    Par cyriane dans le forum VB.NET
    Réponses: 3
    Dernier message: 11/05/2012, 09h52
  3. Expression reguliere et error provider
    Par Msysteme dans le forum Windows Forms
    Réponses: 5
    Dernier message: 03/04/2009, 02h20
  4. Réponses: 2
    Dernier message: 11/09/2008, 13h45
  5. Réponses: 3
    Dernier message: 11/10/2005, 23h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo