2010-09-21 35 views
6

Sé cómo agregar elementos a un ComboBox, pero ¿hay alguna forma de asignar un identificador único a cada artículo? Quiero ser capaz de saber qué Id está asociado a cada elemento si alguna vez se selecciona. ¡Gracias!Id oculto con elementos de ComboBox?

Respuesta

26

Los elementos en un cuadro combinado pueden ser de cualquier tipo de objeto, y el valor que se muestra es el valor ToString().

Para que pueda crear una nueva clase que tenga un valor de cadena para fines de visualización y una identificación oculta. Simplemente anule la función ToString para devolver la cadena de visualización.

Por ejemplo:

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

Y luego en el código:

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

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

Vaya que está bien, lo hice un poco diferente, pero la idea es la misma, gracias una tonelada! – sooprise

+0

Ok espera, ¿ahora cómo obtener el valor oculto? ComboBox.SelectedItem. ??? – sooprise

+0

Básicamente, el lanzamiento es para ComboBoxItem, y luego obtiene el valor oculto ... ((ComboBoxItem) ComboBox.SelectedItem) .hiddenValue; Suponiendo que hiddenValue era público. Por lo general, crearía un descriptor de acceso para la propiedad. –

Cuestiones relacionadas