2010-09-21 36 views
6

Wiem, jak dodawać elementy do ComboBox, ale czy istnieje i tak, aby przypisać unikalny identyfikator do każdego przedmiotu? Chcę wiedzieć, który identyfikator jest powiązany z każdym elementem, jeśli jest on kiedykolwiek wybrany. Dzięki!Ukryty identyfikator z elementami ComboBox?

Odpowiedz

26

Pozycje w combobox mogą być dowolnego typu obiektu, a wyświetlaną wartością jest wartość ToString().

Można więc utworzyć nową klasę, która ma wartość ciągu dla celów wyświetlania i ukryty identyfikator. Po prostu zastąp funkcję ToString, aby zwrócić ciąg znaków.

Na przykład:

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; 
    } 
} 

A potem w kodzie:

//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 to jest cool, zrobiłem to trochę inaczej, ale idea jest taka sama, dzięki mnóstwo! – sooprise

+0

Ok, czekaj, teraz jak uzyskać ukrytą wartość? ComboBox.SelectedItem. ??? – sooprise

+0

Zasadniczo rzut jest na ComboBoxItem, a następnie uzyskać ukrytą wartość ... ((ComboBoxItem) ComboBox.SelectedItem) .hiddenValue; Zakładając, że hiddenValue była publiczna. Zwykle tworzysz akcesor dla tej właściwości. –