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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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

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