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 :

Validation de texbox


Sujet :

Windows Forms

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 13
    Points : 6
    Points
    6
    Par défaut Validation de texbox
    Bonjour,

    Je souhaite parcourir des textbox d'un formulaire pour controler qu'elles ne sont pas vide. Cependant j ai deux textboxs directement dans le fomulaire Form1 et d autres dans un groupBox du meme formulaire. Je n arrive pas les atteindre.
    J arrive à vérifier que les deux premières sont remplies ou non mais pas celles qui se trouvent dans le groupbox. comment faire une préodure récursive qui me permettrait de scanner toutes les textboxs d un formulaire? merci
    La j appel la methode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string message = controle_vide(new Form1());
    La methode
    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
    public string controle_vide(Form f)
            {
                int compteur = 0;
                string message = "";
     
     
                    foreach (System.Windows.Forms.Control oCtrl in this.Controls)
                    {
     
                        if (oCtrl is TextBox)
                        {
                            if (((TextBox)oCtrl).Text == "")
                            {
                                compteur++;
                                oCtrl.BackColor = Color.Yellow;
                                oCtrl.Focus();
                                message = "Il y a " + compteur + " champ(s) à saisir.";
     
                            }
                           else oCtrl.BackColor = Color.White;
                        }
     
     
                    }
     
                return message;
            }
    Avec ca, j arrive a scanner toutes les texboxs qui se trouvent directement dans le Form1 mais pas celles qui se trouvent dans un sous ensemble...

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 240
    Points : 254
    Points
    254
    Par défaut
    Ton GroupBox dispose aussi d'une propriété Controls, ou est le problème ?

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    Le problème ha oui j avais oublié de le précisé, il faut que que je fasse cela par une methode récursive.... Je débute et en C# et en form, enfin en programmation koi....

  4. #4
    Membre actif
    Inscrit en
    Avril 2006
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 346
    Points : 252
    Points
    252
    Par défaut
    Bonjour,

    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
    34
    35
    public string controle_vide(Form f)
    {
        int compteur = 0;
     
       compteur = ControlTextBox(f.Controls, compteur);
     
     
        return String.Format("Il y a {0} champ(s) à saisir.", compteur);
    }
     
    public int ControlTextBox(ControlCollection ctrls, int compteur)
    {
                foreach (System.Windows.Forms.Control oCtrl in ctrls)
                {
                    if (ctrls.Controls > 0)
                    {
                          compteur = ControlTextBox(ctrls.Controls, compteur)
                    }
                    else
                    { 
                        if (oCtrl is TextBox)
                        {
                            if (((TextBox)oCtrl).Text == "")
                            {
                                compteur++;
                                oCtrl.BackColor = Color.Yellow;
                                oCtrl.Focus(); 
                            }
                           else
                               oCtrl.BackColor = Color.White;
                        } 
                   }
              }
         return compteur;
    }
    Au revoir

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 240
    Points : 254
    Points
    254
    Par défaut
    Si tu veux utiliser la récursivité comme tu sembles l'indiquer dans tes posts, ca donne cela (en VB, désolé ) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        Private Function ToutesRenseignees(ByVal Collec As System.Windows.Forms.Control.ControlCollection) As Boolean
            For Each C As Control In Collec
                Select Case True
                    Case C.GetType.Name = "GroupBox" : If Not ToutesRenseignees(DirectCast(C, GroupBox).Controls) Then Return False
                    Case C.GetType.Name = "TextBox" : If DirectCast(C, TextBox).Text = "" Then Return False
                End Select
            Next
            Return True
        End Function
    Tu appelles ta fonction depuis ta Form :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If ToutesRenseignees(This.Controls) Then
        BlaBlaBla ...
    End If

  6. #6
    Membre actif Avatar de g_tarik0010
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 186
    Points : 284
    Points
    284
    Par défaut
    Version c# un peu modifié

    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
     
            private void button1_Click_1(object sender, EventArgs e)
            {
                MessageBox.Show(checkValidity(this));
            }
     
            public String checkValidity(Control ctrl)
            {
                StringBuilder fields = new StringBuilder();
     
                if (ctrl.Controls.Count > 0)
                {
                    foreach (Control c in ctrl.Controls)
                    {
                        fields.Append(checkValidity(c));
                    }
                }
                else
                {
                    if (ctrl is TextBox && ctrl.Text.Equals(String.Empty))
                    {
                        fields.AppendFormat(", {0}", ctrl.Name);
                    }
                }
                return fields.ToString();
            }

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 240
    Points : 254
    Points
    254
    Par défaut
    Envoyé par g_tarik0010 :
    if (ctrl.Controls.Count > 0)
    Ca ne plante pas quand ctrl est un textbox ??? (ou tout autre control n'ayant pas de propriété Controls ?)

  8. #8
    Membre actif Avatar de g_tarik0010
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 186
    Points : 284
    Points
    284
    Par défaut
    chaque controle que ce soit une forme un textbox ou tout autre herite de la classe Control
    Or la classe Control dispose d'une propriété Controls

    Voir la doc de la classe Control

    ICI

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    Merci a tous pour vos réponses. Ayant posté un peu tard je n ai pas pu bénificier de votre aide cependnt et pour ceux que cela interesse voici le code qui aurait pu etre utilisé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    private void RecupererTsTxtBox(System.Windows.Forms.Control.ControlCollection oCtrls, 
    																		ref int iNbTxtVides)
    		{
    			foreach (System.Windows.Forms.Control oCtrl in oCtrls)
    			{
    				// Recursivité
    				if (oCtrl.Controls.Count > 0) RecupererTsTxtBox(oCtrl.Controls, ref iNbTxtVides);
     
    				if ( oCtrl is TextBox )
    					if ( ((TextBox)oCtrl).Text=="" )iNbTxtVides++;
    			}
    		}

Discussions similaires

  1. [XL-2007] validation de changement valeur dans texbox
    Par pilounet54 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 17/03/2012, 22h21
  2. validation d'un XML schema
    Par nicolas_jf dans le forum Valider
    Réponses: 2
    Dernier message: 05/05/2003, 11h25
  3. est ce un XSchema Valide?
    Par Slash dans le forum Valider
    Réponses: 4
    Dernier message: 06/03/2003, 14h01
  4. tester si une date est valide
    Par Andry dans le forum Langage
    Réponses: 5
    Dernier message: 17/09/2002, 11h54
  5. [VB6] Evenement validate
    Par grosjej dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 05/09/2002, 15h46

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