2010-09-21 16 views
6

Ich weiß, wie man Elemente zu einer ComboBox hinzufügt, aber gibt es trotzdem eine eindeutige ID für jedes Element? Ich möchte in der Lage zu wissen, welche Id zu jedem Artikel zugeordnet ist, wenn es überhaupt ausgewählt ist. Vielen Dank!Versteckte ID mit ComboBox-Elementen?

Antwort

26

Die Elemente in einer Combobox können einen beliebigen Objekttyp aufweisen, und der angezeigte Wert ist der ToString() - Wert.

Sie könnten also eine neue Klasse mit einem Zeichenfolgenwert für Anzeigezwecke und einer ausgeblendeten ID erstellen. Überschreiben Sie einfach die ToString-Funktion, um die Anzeigezeichenfolge zurückzugeben.

Zum Beispiel:

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

Und dann in Ihrem 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, das ist cool, ich habe es ein wenig anders war, aber die Idee ist die gleiche, durch eine Tonne! – sooprise

+0

Ok warten, wie bekomme ich den versteckten Wert? ComboBox.SelectedItem. ??? – sooprise

+0

Grundsätzlich ist Cast zu ComboBoxItem, und dann erhalten Sie den versteckten Wert ... ((ComboBoxItem) ComboBox.SelectedItem) .hiddenValue; Angenommen, dass hiddenValue öffentlich war. Normalerweise erstellen Sie stattdessen einen Accessor für die Eigenschaft. –

Verwandte Themen