[c#] Nach dem Adden eines Items in eine ListBox einen versteckten Wert hinterlegen

Hale

Mitglied
Hallo Leute,

Ich stehe vor folgendem Problem:

Ich adde ein Item in eine ListBox und möchte an diesem Item danach einen versteckten Wert hitnerlegen. Es ist zwingend notwendig, dass der Wert an dem Item und nicht dem Index hinterlegt wird, da die Reihenfolge der Items sich ständig verschiebt.

Ich habe schon versucht etwas mit der Tag-Property zu unternehmen, bin jedoch noch nicht wirklich gut weitergekommen =( und hoffe nun auf eure Hilfe.

Im Prinzip hatte ich mir das alles so vorgestellt:

ListBox.Items.Insert(0, "Item");
ListBox.SelectedIndex = 0;
ListBox.Tag.SelectedIndex = "Mein Wert";

Jedoch ist der letzte Schritt keineswegs korrekt und ich erbitte um Hilfe dies zu ändern. Selbstverständlich handelt es sich hierbei um eine Windows Forms und c#-Code.

Gruß
Hale
 
Hallo Hale

Kenne mich nicht so aus mit der Listbox bin mir nicht sicher ob das geht, falls nicht würde ich es so lösen --->

auch wen sich die indexe ändern kannst du diese wider auslesen mit;

Code:
int index = listBox1.Items.IndexOf("TEST");

Falls die Listbox zur Laufzeit erstellt wird würde ich das ganze mit einem DataSet lösen und den zweiten wert einfach immer kurz aus einem DataSet auslesen.

oder ne MultiColumn Listbox machen und den zweiten wert verstecken.

mfg ademo
 
Hi Chihyo,

danke für deine Antwort, aber ich habe gerade eine gänzlich andere Methode gefunden, welche über eine Extra Klasse geht, womit ich genau das realisieren kann was ich brauche.

Falls sich jmd. für diese mögliche Lösung interessiert helfe ich ab sofort gerne weiter, am besten einfach eine PM an mich

Gruß
Hale
 
Für Zukünftige Hilfe suchende hier eine Möglichkeit:

Listbox.Items ist eine ObjectCollection und akzeptiert somit alles was von object erbt. Also so ziemlich fast alles.
Man kann sich also einfach eine eigene Klasse mit den benötigten Eigenschaften schreiben.
Wichtig ist dabei nur die geerbte ToString() Methode zu überschreiben da diese den Wert zurück gibt der letztendlich in der ListBox angezeigt wird.

Beispiel:
C#:
public class listBoxItem
        {
            private string text;
            public string Text
            {
                get { return text; }
                set { text = value; }
            }

            private object tag;
            public object Tag
            {
                get { return tag; }
                set { tag = value; }
            }

            public override string ToString()
            {
                return this.text;
            }
        }

Items zu einer Listbox hinzufügen:
C#:
listBoxItem first = new listBoxItem();
            first.Text = "firstText";
            first.Tag = "firstTag";

            //Oder kürzer
            listBoxItem second = new listBoxItem() { Text = "SecondText", Tag = "SecondTag" };

            listBox.Items.Add(first);
            listBox.Items.Add(second);
 

Neue Beiträge

Zurück