2010-09-21 4 views
6

Je sais comment ajouter des éléments à une zone de liste déroulante, mais est-il possible d'attribuer un ID unique à chaque élément? Je veux être capable de savoir quel ID est associé à chaque élément s'il est sélectionné. Merci!Id caché avec les éléments ComboBox?

Répondre

26

Les éléments d'une zone de liste déroulante peuvent être de n'importe quel type d'objet et la valeur affichée est la valeur ToString(). Par conséquent, vous pouvez créer une nouvelle classe avec une valeur de chaîne à des fins d'affichage et un ID masqué. Remplacez simplement la fonction ToString pour retourner la chaîne d'affichage.

Par exemple:

public class ComboBoxItem() 
{ 
    string displayValue; 
    string hiddenValue; 

    //Constructor 
    public ComboBoxItem (string d, string h) 
    { 
     displayValue = d; 
     hiddenValue = h; 
    } 

    //Accessor 
    public string HiddenValue 
    { 
     get 
     { 
      return hiddenValue; 
     } 
    } 

    //Override ToString method 
    public override string ToString() 
    { 
     return displayValue; 
    } 
} 

Et puis dans votre code:

//Add item to ComboBox: 
ComboBox.Items.Add(new ComboBoxItem("DisplayValue", "HiddenValue"); 

//Get hidden value of selected item: 
string hValue = ((ComboBoxItem)ComboBox.SelectedItem).HiddenValue; 
+0

Wow c'est cool, je l'ai fait un peu différemment, mais l'idée est la même, grâce une tonne! – sooprise

+0

Ok, attends, maintenant comment obtenir la valeur cachée? ComboBox.SelectedItem. ??? – sooprise

+0

Fondamentalement, cast est à ComboBoxItem, et ensuite obtenir la valeur cachée ... ((ComboBoxItem) ComboBox.SelectedItem) .hiddenValue; En supposant que hiddenValue était public. Généralement, vous créez un accesseur pour la propriété. –

Questions connexes