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 :

Binding sur une combobox


Sujet :

Windows Forms

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 69
    Points : 30
    Points
    30
    Par défaut Binding sur une combobox
    Salut,

    Je ne cromprend pas les deux comportements suivant avec le code ci dessous. J'ai mappé une combobox a un object custom et je veux qu'a chaque fois que l'on sélectionne une valeur différente via la combobox, que cette valeur se retrouve dans l'objet.

    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
     
    public partial class MainForm : Form
    {
        private Person _person;
        public MainForm()
        {
            InitializeComponent();
            _person = new Person();
     
            //Populating the combox, we have this.comboBoxCities.DataSource = this.cityBindingSource;
            cityBindingSource.Add(new City("London"));
            cityBindingSource.Add(new City("Paris"));
            _person.BirthCity = new City("Roma");
            cityBindingSource.Add(_person.BirthCity);
            cityBindingSource.Add(new City("Madrid"));
     
            //Doing the binding
            comboBoxCities.DataBindings.Add("SelectedItem", _person, "BirthCity");
        }
     
        private void buttonDisplay_Click(object sender, EventArgs e)
        {
            MessageBox.Show("BirthCity=" + _person.BirthCity.Name);
        }
     
        private int i = 0;
        private void buttonAddCity_Click(object sender, EventArgs e)
        {
            City city = new City("City n°" + i++);
            cityBindingSource.Add(city);
            comboBoxCities.SelectedItem = city;
        }
     
    }
    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
     
    public class Person
    {
        private City _birthCity;
        public City BirthCity
        {
            get { return _birthCity; }
            set
            {
                Console.WriteLine("Setting birthcity : " + value.Name);
                _birthCity = value;
            }
        }
    }
     
    public class City
    {
        public string Name { get; set; }
        public City(string name) { Name = name; }
        public override string ToString() { return Name; }
    }
    1-Pourquoi quand je sélectionne manuellement 2 fois à la suite (ou plus) des valeurs différentes dans la combobox, j'ai un seul appel a birthcity.Set avec la dernière valeur sélectionnée (et pourquoi cet appel à l'air d'intervenir uniquement après la perte du focus par la combobox) ?

    2- Pourquoi quand je clique sur buttonAddCity puis ensuite sur buttonDisplay, la valeur affichéz n'est pas la meme que la valeur sélectionnée (ie le binding n'est pas bon) ?

    Si je n'ai pas été clair, je peux approfondir.

    Des idées ?

  2. #2
    Membre éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2007
    Messages
    693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 693
    Points : 1 187
    Points
    1 187
    Par défaut
    Bonjour,

    Pour la question 1 :
    Je dirais peut-être car la valeur d'une combo change quand la combo perd le focus sinon la combo est en cours d'édition.

    Pour la question 2 :
    Tu as quoi comme valeur ? Celle de la précédente ville affectée ?
    Sinon il faut vérifier que l'affectation du selecteditem de la combo déclenche l'appel du set de BirthCity

    Bon courage

  3. #3
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Ah, le binding de combo
    Tu peux aussi essayer de modifier ton binding, en spécifiant un type de mise à our différent. je sais plus le nom exact de l'enum, mais regarde quelles surcharges de DataBindings.Add sont disponibles.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 69
    Points : 30
    Points
    30
    Par défaut
    En faite il semblerait qu'il manquait la validation, ce que semble dire ostenhard.

    Sinon j'avais posté un message équivalent sur stackoverflow si ca intéresse : http://stackoverflow.com/questions/1...ng-on-combobox .

    On m'a donc répondu dessu pour la validation. Et en ajout un un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    comboBoxCities.Focus();
    à la fin de la fonction buttonAddCity_Click, ca marche.

    Par contre si je fais plutot un Validate(),ca ne marche pas, pourquoi ? Est ce que quelqu'un aurait de la doc/tuto sur le fonctionnement du binding des controls. Thx

Discussions similaires

  1. [MVVM] Binding TwoWay sur une combobox
    Par Digilougm dans le forum Silverlight
    Réponses: 5
    Dernier message: 21/06/2011, 11h06
  2. Probleme vaudou sur une combobox
    Par sabotage dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 20/07/2007, 16h32
  3. evenement keypress sur une combobox
    Par ashash dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 17/07/2007, 22h01
  4. Test sur une ComboBox (Liste déroulante).
    Par SeaWolf601 dans le forum IHM
    Réponses: 5
    Dernier message: 05/10/2006, 17h29
  5. binding sur une string
    Par fxp17 dans le forum JSF
    Réponses: 8
    Dernier message: 08/09/2006, 11h38

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