2010-09-21 25 views
6

So come aggiungere elementi a un ComboBox, ma è comunque necessario assegnare un ID univoco a ciascun elemento? Voglio essere in grado di sapere quale ID è associato a ciascun oggetto se è stato selezionato. Grazie!ID nascosto con elementi ComboBox?

risposta

26

Gli elementi in una casella combinata possono essere di qualsiasi tipo di oggetto e il valore che viene visualizzato è il valore ToString().

Quindi è possibile creare una nuova classe che ha un valore stringa per scopi di visualizzazione e un ID nascosto. Basta sovrascrivere la funzione ToString per restituire la stringa di visualizzazione.

Per esempio:

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

E poi nel codice:

//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 che figata, ho fatto un po 'diverso, ma l'idea è la stessa, grazie una tonnellata! – sooprise

+0

Ok aspetta, ora come ottengo il valore nascosto? ComboBox.SelectedItem ???. – sooprise

+0

Fondamentalmente, il cast è in ComboBoxItem e quindi ottiene il valore nascosto ... ((ComboBoxItem) ComboBox.SelectedItem) .hiddenValue; Supponendo che hiddenValue fosse pubblico. In genere, si crea una accessor per la proprietà. –

Problemi correlati