2016-05-12 71 views
1

我有一个列表框,我需要为每个项目添加一个标签。所以,我这个代码做到这一点:试图访问我自己定义的对象的属性

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

我corectly添加一个项目时,我需要给它一个标签,在这里后,就可以了。 但是,当我尝试浏览我的列表框我不能答应标签:

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

这是我的问题。 谢谢。

回答

2

你需要转换列表项是Object类型的你的类型,像这样:

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

我真的很感谢你们Gortler!我知道我必须投它,但我找不到赖特的方式。 –

+0

只是一个建议,但如果你在做“as”的时候没有检查null,那么你可能只是直接施放它。这将抛出一个对象引用异常,而不是一个无效的强制转换异常,它在调试时会更清楚地识别问题:) – KSib