2016-05-12 3 views
1

Ich habe eine Listbox, die ich brauche, um jedem Element ein Tag hinzuzufügen. So mache ich es mit diesem Code:Ich versuche, auf die von mir definierte Objekteigenschaft zuzugreifen

public class ListBoxItem : Object 
{ 
    public int Id { get; set; } 
    public string Text { get; set; } 
    public int Tag { get; set; } 

    public ListBoxItem() 
    { 
     this.Id = 0; 
     this.Text = string.Empty; 
     this.Tag = 0; 
    } 
    public ListBoxItem(string Text, int Tag, int Id) 
    { 
     this.Id = Id; 
     this.Text = Text; 
     this.Tag = Tag; 

    } 
    public ListBoxItem(object Object) 
    { 
     this.Text = Object.ToString(); 

    } 


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

ich hinzufügen corectly ein Element, wenn ich brauche, nachdem es einen Tag geben, hier ist es OK. Aber wenn ich versuche, meine listbox zu durchsuchen i beitreten kann nicht Tag:

for (int i=0; i< listBox_map.Items.Count; i++) 
     { 
      if (listBox_map.Items[i].Tag==1) // .Tag don't appeare 
       //do something 
     } 

Das ist mein Problem. Danke.

Antwort

2

Sie müssen den Listeneintrag werfen, die vom Typ Object auf Ihre Art ist, wie folgt aus:

if ((listBox_map.Items[i] as ListBoxItem).Tag==1) 
{ 
    ... 
} 
+0

Ich danke Gortler wirklich! ich weiß, dass ich es werfen muss, aber ich kann den wright Weg nicht finden. –

+0

Nur ein Vorschlag, aber wenn Sie nicht auf Null prüfen, wenn Sie "wie" tun, dann können Sie es auch einfach direkt umsetzen. Dadurch wird eine Objektreferenzausnahme anstelle einer ungültigen Ausnahmebedingung ausgelöst, die das Problem beim Debuggen ein wenig deutlicher macht. – KSib