locked
Colonne cachée d'un combobox RRS feed

  • Question

  • bonjour,
    j'ai un combobox que je dois remplir avec des elements (string) que j'ai mis dans un tableau, mais je veux associer à chaque element une donnée qui me servira de clé(comme on le fait avec ValueMember et DisplayMember s'il s'agit d'un combobox lié à un source de données).
    Solution???

    lundi 22 septembre 2008 13:38

Réponses

  • Bonjour,

     

    Le plus simple et le plus pro :

    • Vous créer une classe comme ceci :

    Code Snippet

    public class Element

    {

    private string cle;

    private string valeurAffiché;

     

    public Element(string cle, string valeurAffiché)

    {

    this.cle = cle;

    this.valeurAffiché = valeurAffiché;

    }

     

    public string Cle

    {

    get { return cle; }

    }

    public string ValeurAffiché

    {

    get { return valeurAffiché; }

    }

    }

     

     

    • Vous créer un tableau d'Element (vous instanciez une classe par élément de votre combo).

    • En mode Design, vous indiquez que votre source de données et le type de cette classe (un bindingsource devrait être crée automatiquement).

    • Associez ValueMember = "Clé"
    • Associez DisplayMember = "ValeurAffiché"
    • Mettre dans le DataSource de votre BindingSource le tableau que vous avez crée au tout début.

    Plusieurs chose à noter :

    • Vous pouvez changer le type de votre clé (int, float, Chou, Banane, Maison, Bièèèère,...etc)
    • Lorsque vous appellez la propriété SelectedValue, vous obtenez votre clé, mais il faut caster le résultat :
      • int i = (int)combo.SelectedValue;
    • La propriété SelectedItem renvoi un objet de type Element (qu'il faut caster) :
      • string s = (string)combo.SelectedItem;

    Cordialement

    mardi 23 septembre 2008 11:14

Toutes les réponses

  • Bonjour,

     

    Le plus simple et le plus pro :

    • Vous créer une classe comme ceci :

    Code Snippet

    public class Element

    {

    private string cle;

    private string valeurAffiché;

     

    public Element(string cle, string valeurAffiché)

    {

    this.cle = cle;

    this.valeurAffiché = valeurAffiché;

    }

     

    public string Cle

    {

    get { return cle; }

    }

    public string ValeurAffiché

    {

    get { return valeurAffiché; }

    }

    }

     

     

    • Vous créer un tableau d'Element (vous instanciez une classe par élément de votre combo).

    • En mode Design, vous indiquez que votre source de données et le type de cette classe (un bindingsource devrait être crée automatiquement).

    • Associez ValueMember = "Clé"
    • Associez DisplayMember = "ValeurAffiché"
    • Mettre dans le DataSource de votre BindingSource le tableau que vous avez crée au tout début.

    Plusieurs chose à noter :

    • Vous pouvez changer le type de votre clé (int, float, Chou, Banane, Maison, Bièèèère,...etc)
    • Lorsque vous appellez la propriété SelectedValue, vous obtenez votre clé, mais il faut caster le résultat :
      • int i = (int)combo.SelectedValue;
    • La propriété SelectedItem renvoi un objet de type Element (qu'il faut caster) :
      • string s = (string)combo.SelectedItem;

    Cordialement

    mardi 23 septembre 2008 11:14
  • Merci monsieur Tourreau
    mardi 23 septembre 2008 16:31