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 :

Usercontrol textbox et databinding


Sujet :

Windows Forms

  1. #1
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 17
    Par défaut Usercontrol textbox et databinding
    Bonjour,

    Je débute en programmation et j'ai créé un projet de test. Il est constitué d'un form(avec un bindingnavigator) dans lequel j'ai déposé un usercontrol ("MyControl") possédant deux textbox liés à une base de donnée.

    Le tout fonctionne convenablement mais je souhaiterais savoir s'il est possible d'écrire le code de manière plus "condensée" dans le usercontrol ("Mycontrol"). Ce que je voudrais savoir c'est s'il n'est pas possible de rassembler le public string employeeName et le public string Country. Ce qui pourrait être intéressant je crois si je place une douzaine de textbox.

    Si cela est possible, cela aura forcément des répercutions sur le code de mon form. Qu'elles seraient les modification a apporter?

    Voici le code du Form
    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 button1_Click(object sender, EventArgs e)
            {
                //Populate rows to the dataset.
                sqlDataAdapter1.Fill(dataSet11.Tables["Customers"]);
                this.customersBindingSource.DataSource = dataSet11.Tables["Customers"];
                this.textBox1.DataBindings.Add(new Binding ("Text", this.customersBindingSource,"CompanyName"));
     
                //Set employeeLName as the data-bound property, and set dataSet11 as the data source.
                this.bindingNavigator1.BindingSource = this.customersBindingSource;
                this.Controls.Add(this.bindingNavigator1);
     
                //Set employeeLName as the data-bound property, and set dataSet11 as the data source.
                this.myControl1.DataBindings.Add(new Binding("employeeName", this.customersBindingSource, "CompanyName"));
                this.myControl1.DataBindings.Add(new Binding("Country", this.customersBindingSource, "Country"));
     
                button1.Visible = false;
            }
    et le code de MyControl

    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
      public MyControl()
            {
                InitializeComponent();
            }
     
            public event System.ComponentModel.PropertyChangedEventHandler employeeNameChanged;
            public string empLName = "";
            public string test2 = "";
     
            //Makes this property bindable.
            [System.ComponentModel.Bindable(true)]
            public string EmployeeName
            {
                get
                {
                    return empLName;
                }
                set
                {
                    empLName = value;
                    this.textBox1.Text = empLName.ToString();
                }
            }
     
            public string Country
            {
                get
                {
                    return test2;
                }
                set
                {
                    test2 = value;
                    this.textBox2.Text = test2.ToString();
                }
            }
            public void OnemployeeNameChanged(System.ComponentModel.PropertyChangedEventArgs e)
            {
                //Raise the employeeIDChanged event.
                if (employeeNameChanged != null)
                    employeeNameChanged(this, e);
            }
        }
    Merci à ceux qui voudront bien y regarder

  2. #2
    Membre Expert Avatar de callo
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Par défaut
    Citation Envoyé par divos Voir le message
    Ce que je voudrais savoir c'est s'il n'est pas possible de rassembler le public string employeeName et le public string Country.
    Pas très clair. Peux-tu être plus explicite ?

  3. #3
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 17
    Par défaut
    Merci de t'intéressé à cette question.

    Dans mycontrol

    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
    public MyControl()
            {
                InitializeComponent();
            }
     
            public event System.ComponentModel.PropertyChangedEventHandler employeeNameChanged;
            public string empLName = "";
            public string test2 = "";
     
            //Makes this property bindable.
            [System.ComponentModel.Bindable(true)]
            public string EmployeeName
            {
                get
                {
                    return empLName;
                }
                set
                {
                    empLName = value;
                    this.textBox1.Text = empLName.ToString();
                }
            }
     
            public string Country
            {
                get
                {
                    return test2;
                }
                set
                {
                    test2 = value;
                    this.textBox2.Text = test2.ToString();
                }
            }
            public void OnemployeeNameChanged(System.ComponentModel.PropertyChangedEventArgs e)
            {
                //Raise the employeeIDChanged event.
                if (employeeNameChanged != null)
                    employeeNameChanged(this, e);
            }
        }
    Est-il possible d'écrire quelque chose du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public string EmployeeName
            {
                get
                {
                    return (empLName,test2);
                }
                set
                {
                    empLName = value;
                    this.textBox1.Text = empLName.ToString();
                    test2 = value;
                    this.textBox2.Text = test2.ToString();
                }
            }
    Cette modif, je l'ai essayée et cela ne fonctionne pas. Y a-t-il donc un moyen d'écrire cela pour que ca fonctionne ?

    Si oui, il y aura forcément des répercutions sur le code de ma Form principal à cet endroit puisque "Country" disparait pour ne laisser place qu'à "EmployeeName"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     //Set employeeLName as the data-bound property, and set dataSet11 as the data source.
                this.myControl1.DataBindings.Add(new Binding("employeeName", this.customersBindingSource, "CompanyName"));
                this.myControl1.DataBindings.Add(new Binding("Country", this.customersBindingSource, "Country"));
    Voilà. J'espère avoir été plus clair. Merci encore

  4. #4
    Membre Expert Avatar de callo
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Par défaut
    Je ne suis pas sûr que ce que tu t'en sorte en procédant ainsi.
    Pourquoi ne pas créer une autre métode qui renverrait ton EmployeeName et ton Country.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Public string MaMethode()
    {
    		string NameEmp;
    		string Pays;
    		string separateur = "/";
     
    		NameEmp = this.empLName;
    		Pays = this.test2;
     
    		return NameEmp + separateur + Pays;
    }
    Ensuite tu utilises un split() pour recupérer la valeur voulue avant de faire ton binding.

    Autre remarque : je crois qu'il y a quelque chose d'incorrect à ce niveau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    this.myControl1.DataBindings.Add(new Binding("employeeName", this.customersBindingSource, "CompanyName"));
    this.myControl1.DataBindings.Add(new Binding("Country", this.customersBindingSource, "Country"));
    Tu devrais voir quelque chose du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    this.myControlEmployeeName.DataBindings.Add(new Binding("employeeName", this.customersBindingSource, "CompanyName"));
     
    this.myControlCountry.DataBindings.Add(new Binding("Country", this.customersBindingSource, "Country"));

  5. #5
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 17
    Par défaut
    Merci de ton aide.

    Je vais essayer de mettre cela en pratique ce week-end et te tiens informé.

  6. #6
    Membre Expert Avatar de callo
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Par défaut
    ok bon week end et bon developpement

  7. #7
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 17
    Par défaut
    Week-end trop chargé que pour pouvoir appliquer tes recommandations que je viens de relire.

    Il y a une chose qui me perturbe dans ta proposition concernant la deuxième partie.

    En effet, j'ai l'impression que tu parles de deux contrôles différents("myControlEmployeeName" et "myControlCountry").

    Cependant, dans mon cas de figure, j'ai un seul control ("myControl") qui contient deux textbox et ce "mycontrol" est intégré dans un from principal.

    Comme je l'ai dit, ma navigation se déroule sans problème. Je me demandait si ce que j'écrivais semblait juste et également (pure paresse) s'il était possible d'écrire le code de myControl de manière plus condensée avec une seule Méthode et un seul "get" et "set" pour plusieurs textbox; car je souhaiterais que ce control contienne une douzaine de textbox.(--> une seule méthode avec un seul "get" et "set" pour douze textbox est plus court que douze méthode avec chacune un "get" et "set").

    D'autant que la lecture du code serait réduite lors de l'exécution du programme.

    Pas certain d'être très clair.

    Par ailleurs je ne connais pas (débutant oblige) la notion de split().

    Merci.

  8. #8
    Membre Expert Avatar de callo
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Par défaut
    Citation Envoyé par divos Voir le message
    Je me demandait si ce que j'écrivais semblait juste et également (pure paresse) s'il était possible d'écrire le code de myControl de manière plus condensée avec une seule Méthode et un seul "get" et "set" pour plusieurs textbox; car je souhaiterais que ce control contienne une douzaine de textbox.(--> une seule méthode avec un seul "get" et "set" pour douze textbox est plus court que douze méthode avec chacune un "get" et "set").
    Merci.
    Dans ce cas, je pense qu'il va falloir que tu écrives toi même une classe qui réponde à tes aspirations

    Par ailleurs je ne connais pas (débutant oblige) la notion de split().
    Fais une recherche avec google ou regarde ici

  9. #9
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 17
    Par défaut
    Parfait.

    Merci pour le lien et pour ta collaboration.

    A la prochaine peut-être (car des questions, j'en aurai certainement encore beucoup).

Discussions similaires

  1. [Débutant] Validation Textbox et databinding
    Par Devko dans le forum Windows Forms
    Réponses: 1
    Dernier message: 24/07/2013, 15h10
  2. lier textbox par databinding
    Par r83 dans le forum ADO.NET
    Réponses: 5
    Dernier message: 28/03/2013, 21h49
  3. textbox et databinding
    Par morgan_2956 dans le forum C#
    Réponses: 2
    Dernier message: 20/09/2010, 21h18
  4. [UserControl - TextBox] 2 format de texte
    Par TheBlackReverand dans le forum C#
    Réponses: 2
    Dernier message: 03/08/2008, 02h42
  5. [VB.NET] TextBox et DataBinding, encore :-)
    Par apoingsfermes dans le forum Windows Forms
    Réponses: 4
    Dernier message: 21/07/2006, 14h35

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