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

C# Discussion :

Problémes Contrôles utilisateurs


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2008
    Messages : 119
    Par défaut Problémes Contrôles utilisateurs
    Bonjour a tous,

    Je voudrais avoir des petites informations concernant les contrôles utilisateurs. Je vous explique: J'ai un formulaire "frmNewCustomer" ou j'ai l'ensemble de mes champs qui me permet d'insérer un nouveau client. Lors de mon clique sur le bouton "Ok", ceci fait appel a la méthode addCustomer.

    J'aimerai, tester si un champs est vide alors retourner sur le formulaire pour pouvoir renseigner le champs manquant. J'ai mis ceci comme code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    if (tbName.Text == "")
                    {
                        if (MessageBox.Show("Veuillez remplir tous les champs", "Attention", MessageBoxButtons.OK, MessageBoxIcon.Exclamation) == DialogResult.OK)
                        {
                            return;
                        }
                    }
    Cependant, return ne me permet pas de revenir sur le formulaire "frmNewCustomer". Il me le ferme et je ne peux pas insérer le champs tbName. Comment puis-je procéder? De plus, est-il possible de se positionner directement sur la textBox correspondante au contrôle manquant?

    Cordialement.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 97
    Par défaut
    Dans AddCustomer, ajoute une valeur de retour (true ou false), et renvoie "false" quand les données sont incorrectes.

    Dans l'event handler du bouton (la fonction qui appelle AddCustomer), récupère cette valeur de retour et quitte la fonction si tu reçois False.

    Pour sélectionner le contrôle ayant une valeur incorrect, il suffit d'appeler sa méthode "Focus".

    Ce qui donnerait quelque chose du 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
    20
    21
    22
    23
    24
    25
     
     
    private void ButtonOk_Click(object sender, EventArgs e)
    {
        if (! this.AddCustomer())
        {
            return;
        }
     
       // Suite des traitements et fermeture de la fenêtre
       this.Close();
    }
     
    private bool AddCustomer()
    {
     
         if (tbName.Text == "")
         {
                        if (MessageBox.Show("Veuillez remplir tous les champs", "Attention", MessageBoxButtons.OK, MessageBoxIcon.Exclamation) == DialogResult.OK)
                 {
                       tbName.Focus();
                       return false;
                 }
         }
    }

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2008
    Messages : 119
    Par défaut
    Merci pour ta réponse.

    J'ai une première question : Que veut dire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (! this.AddCustomer())
    . Le point d'exclamation me pose problème.

    Je ne vois pas comment je peux faire ceci. (Pour info, cette application est ma premiere en C#. Je suis donc débutant).

    Mon code btnOK_Click:

    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 btnOK_Click(object sender, EventArgs e)
        {
            try
                {
                    if (tbName.Text == "")
                    {
                        if (MessageBox.Show("Veuillez remplir tous les champs", "Attention", MessageBoxButtons.OK, MessageBoxIcon.Exclamation) == DialogResult.OK)
                        {
                            tbName.Focus();
                            //return false;
                        }
                    }
     
                    string pathBdd = @"Data Source=|DataDirectory|\dbShelter.sdf;Password=;Persist Security Info=True";
                    clConnexionBdd.Init(pathBdd);
     
                    myCustomer.AddCustomer();
     
                    clConnexionBdd.Shut();
                    //this.Close();
                }
                catch (Exception x)
                {
                    MessageBox.Show(this, x.Message, "Erreur Connexion à la base", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
    Mon code pour addCustomer :

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    public void AddCustomer()
            {
                SqlCeCommand cmd = clConnexionBdd.PreparerCommande("SELECT * FROM Customer "
                    + "WHERE (FirstName = @FirstName AND Name = @Name)");
                cmd.Parameters.Add("@FirstName", SqlDbType.NVarChar).Value = this._firstNameCustomer;
                cmd.Parameters.Add("@Name", SqlDbType.NVarChar).Value = this._nameCustomer;
     
                // Object datareader
                SqlCeDataReader rdr = cmd.ExecuteReader();
                Object[] row = null;
                bool find = false;
                while (rdr.Read())
                {
                    if (row == null)
                    {
                        MessageBox.Show("Le client existe déja dans la base de données", "Client déja référencé", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        find = true;
                    }
                }
                rdr.Close();
     
                if (find == false)
                {
                    SqlCeCommand cmdAddCustomer = clConnexionBdd.PreparerCommande("INSERT INTO Customer (Civility, FirstName, Name, AdressL1, AdressL2, "
                        + "ZipCode, City, Country, TelHome, TelOffice, TelMobile, Fax, Email, Observations, OriginBooking, TypeOf, "
                        + "Appreciation, DateCreated) "
                        + "VALUES (@Civility, @FirstName, @Name,  @AdressL1, @AdressL2, @ZipCode, @City, @Country, @TelHome, @TelOffice,"
                        + "@TelHome, @Fax, @Email, @Observations, @OriginBooking, @TypeOf, @Appreciation, @DateCreated)");
     
                    //Attribution des valeurs aux paramètres 
                    cmdAddCustomer.Parameters.Add("@Civility", SqlDbType.NVarChar).Value = this._civilityCustomer;
                    cmdAddCustomer.Parameters.Add("@FirstName", SqlDbType.NVarChar).Value = this._firstNameCustomer;
                    cmdAddCustomer.Parameters.Add("@Name", SqlDbType.NVarChar).Value = this._nameCustomer;
                    cmdAddCustomer.Parameters.Add("@AdressL1", SqlDbType.NVarChar).Value = this._adressL1Customer;
                    cmdAddCustomer.Parameters.Add("@AdressL2", SqlDbType.NVarChar).Value = this._adressL2Customer;
                    cmdAddCustomer.Parameters.Add("@ZipCode", SqlDbType.NVarChar).Value = this._zipCodeCustomer;
                    cmdAddCustomer.Parameters.Add("@City", SqlDbType.NVarChar).Value = this._cityCustomer;
                    cmdAddCustomer.Parameters.Add("@Country", SqlDbType.NVarChar).Value = this._countryCustomer;
                    cmdAddCustomer.Parameters.Add("@TelHome", SqlDbType.NVarChar).Value = Convert.ToInt64(this._telHomeCustomer);
                    cmdAddCustomer.Parameters.Add("@TelOffice", SqlDbType.NVarChar).Value = Convert.ToInt64(this._telOfficeCustomer);
                    cmdAddCustomer.Parameters.Add("@TelMobile", SqlDbType.NVarChar).Value = Convert.ToInt64(this._telMobileCustomer);
                    cmdAddCustomer.Parameters.Add("@Fax", SqlDbType.BigInt).Value = Convert.ToInt64(this._faxCustomer);
                    cmdAddCustomer.Parameters.Add("@Email", SqlDbType.NVarChar).Value = this._emailCustomer;
                    cmdAddCustomer.Parameters.Add("@Observations", SqlDbType.NVarChar).Value = this._observationsCustomer;
                    cmdAddCustomer.Parameters.Add("@OriginBooking", SqlDbType.NVarChar).Value = this._originBookingCustomer;
                    cmdAddCustomer.Parameters.Add("@TypeOf", SqlDbType.NVarChar).Value = this._typeOfCustomer;
                    cmdAddCustomer.Parameters.Add("@Appreciation", SqlDbType.NVarChar).Value = this._appreciationCustomer;
                    cmdAddCustomer.Parameters.Add("@DateCreated", SqlDbType.DateTime).Value = this._dateCreatedCustomer;
     
                    cmdAddCustomer.ExecuteNonQuery();
                }
            }

  4. #4
    Membre éprouvé Avatar de lou-03
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 156
    Par défaut
    Le ! signifie 'not'. On l'utilise si tu veux à la place de if(this.AddCustomer() == false)
    if (! this.AddCustomer()) --> si this.AddCustomer() renvoie faux alors...

    Mais bon ici ta fonction addCustomer ne renvoie pas de booléen.

    Concernant ton appli, tu peux à la place de ton return false utiliser simplement un booléen pour savoir si ton champ est correct. s'il l'est, tu peux utiliser addCustomer, sinon tu ne fais rien.

    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
     
     
    private void btnOK_Click(object sender, EventArgs e)
        {
            bool verif = true;
            // verification des champs
            if (tbName.Text == "")
                    {
                        if (MessageBox.Show("Veuillez remplir tous les champs", "Attention", MessageBoxButtons.OK, MessageBoxIcon.Exclamation) == DialogResult.OK)
                        {
                            //si tes champs sont incorrects tu mets verif à faux
                            verif = false;
                        }
                    }
           //si verif est à vrai , tes champs sont corrects tu peux entamer la connexion
           if(verif)
          {
            try
                {
                    string pathBdd = @"Data Source=|DataDirectory|\dbShelter.sdf;Password=;Persist Security Info=True";
                    clConnexionBdd.Init(pathBdd);
     
                    myCustomer.AddCustomer();
     
                    clConnexionBdd.Shut();
                    //this.Close();
                }
                catch (Exception x)
                {
                    MessageBox.Show(this, x.Message, "Erreur Connexion à la base", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
         }
    C'est ce que tu voulais ou pas?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2008
    Messages : 119
    Par défaut
    JE viens de tester ce que tu viens de me donner. Le code marche, mais lorsque verif = False. Le formulaire se ferme directement et je ne peux pas rentrer la valeur manquante.

    Donc sa annule completement l'insertion du nouveau client. et je dois recommencer l'opération a zéro. C'est à dire, ouvrir le formulaire "frmNewCustomer".

    De plus, est-il possible d'ajouter plusieurs conditions dans un if. Du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (tbName.Text == "") OR (tbFirstName.Text == "") etc...

  6. #6
    Membre éprouvé Avatar de lou-03
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 156
    Par défaut
    Oui tu peux avoir plusieurs conditions dans ton if

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    //pour un "ou" : barre verticale de la touche 6
    if (tbName.Text == "" || tbFirstName.Text == "")  
    //pour un "et"
    if (tbName.Text == "" && tbFirstName.Text == "")
    Ce que je ne comprend pas c'est que ta form se ferme alors qu'il n'y a pas de this.close(). La fermes-tu quelque part?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème Contrôles utilisateurs VB.NET
    Par jaramend dans le forum VB.NET
    Réponses: 0
    Dernier message: 09/05/2014, 16h14
  2. Problème de mise en forme de contrôles utilisateurs imbriquées
    Par premiumbfd dans le forum Windows Forms
    Réponses: 2
    Dernier message: 24/08/2009, 20h03
  3. Problème Contrôle Utilisateur
    Par ILYAS_BHN dans le forum ASP.NET
    Réponses: 0
    Dernier message: 26/02/2009, 16h14
  4. [VB6] Problème contrôle Timer et boucle For-Next ...
    Par Stéphane BEHMENBURG dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 01/12/2005, 17h36

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