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 :

ComboBox : Comment le BindingManager interprête-t'il la datasource ?


Sujet :

Windows Forms

  1. #1
    Membre Expert
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 183
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 183
    Par défaut ComboBox : Comment le BindingManager interprête-t'il la datasource ?
    Bonjour.

    J'essaye de comprendre un fonctionnement du combobox assez étonnant.

    L'objet positionné en datasource doit implémenter Ilist : ça nous donne pas mal de possibilité.

    Une fois la datasource positionnée, le combo charge ça datamanager.list avec des items déduits de datasource.

    Le combo a 2 comportements différents suivant la datasource :
    - soit la datasource est composée d'objets "complexes" (une classe perso, une datatable par exemple) : dans ce cas, il est nécessaire de définir un valuemember et un displaymember.
    - soit la datasource est composée d'objets "simples" (un tableau de string par exemple) : dans ce cas, le valuemenber et le displaymember sont inutiles.

    Ce qui me perturbe c'est qu'un string expose (via System.Reflection.PropertyInfo) les propriétés chars et length... j'aurai compris le fonctionnement si une seule propriété était exposée mais avec 2 propriétés je séche !

    J'ai fait un coup de reflector sur le combo mais ça m'a pas avancé beaucoup.

    Quelqu'un sait-il comment le combo déduit la nécessité du binding via valuemember et un displaymember ?

    Cdt.

  2. #2
    Membre Expert
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 183
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 183
    Par défaut
    Re.

    Bon, ben c'est résolu.

    En fait, tout ce joue dans le setdatasource de la class currencymanager (datamanager est un currencymanager).

    Le combo différencie les list de type Array ou qui implémente Ilist et IlistSource (comme datatable par exemple) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
                if (list is Array)
                {
                    this.finalType = list.GetType();
                    list = (Array) list;
                }
                if (list is IListSource)
                {
                    list = ((IListSource) list).GetList();
                }
                if (list is IList)
                {
    ...
    Conclusion : Loué soit Reflector !!!

    Cdt.

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

Discussions similaires

  1. ComboBox Comment les configurer?
    Par parp1 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 24/05/2007, 12h42
  2. Réponses: 2
    Dernier message: 01/12/2006, 14h50
  3. [C#] ComboBox: comment le rendre non éditable?
    Par therock dans le forum Windows Forms
    Réponses: 3
    Dernier message: 28/06/2006, 15h59
  4. [VB.Net 2.0][ComboBox]Comment mettre plusieurs colonnes?
    Par bataj dans le forum Windows Forms
    Réponses: 2
    Dernier message: 29/03/2006, 12h37
  5. Réponses: 6
    Dernier message: 07/07/2005, 20h58

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