2012-01-20 42 views
1

我试图让listbox1.SelectedItems的所有标签,所以我想用这样一个foreach:不能存取权限列表项

foreach (ListItem itm in listBox1.SelectedItems) 
     { 
      MessageBox.Show(itm.Tag); 
     } 

但VS2010没有找到“列表项”和我需要添加特定的参考..但我找不到它。我可以做其他事情吗?或者我可以在哪里找到参考或装配。 谢谢!

+2

尝试使用'var'关键字。然后让编译器通过将光标悬停在它上面来确定它的类型。 – Aphelion

+0

我想检索项目的标签,因为它与项目的文本不同。 – XandrUu

+0

WinForms应用程序 – XandrUu

回答

2

财产listBox1.SelectedItems返回Object的集合。这些是您选择的实际对象。没有ListItem对象。

尝试使用var关键字。然后让编译器通过将光标悬停在它上面来确定它的类型。它向你展示了什么样的对象类型?

它似乎是ListViewItem但是,您尝试使用ListItem类型。

+0

那么我该如何去抛出我所有的listbox1.SelectedItems并显示它的tagas? – XandrUu

+0

它取决于你放入的对象是否支持'Tag'属性。你把什么类型的对象放入列表中? – Aphelion

+0

ListViewItem itms = new ListViewItem(); itms.Text =“test”; itms.Tag = “test2的”; – XandrUu

1

listBox1.SelectedItems返回对象的集合,因此它取决于它们在将它们添加到列表框时的类型。如果添加它们作为字符串,例如,你可以这样做:

foreach (String str in listBox1.SelectedItems) 
{ 
    MessageBox.Show(str); 
} 
0

listBox1.SelectedItems的类型ListBox.ObjectCollection的。你为什么要转换成ListItem?

您可以创建一个自定义对象,使用其绑定到ListBox对象:

listBox1.DataSource = YOUR_CUSTOM_OBJECT_ARRAY 

然后通过你的项目迭代:

foreach (YOUR_CUSTOM_OBJECT itm in listBox1.SelectedItems) 
    { 
     MessageBox.Show(itm.CUSTOM_PROPERTY); 
    } 

您可以在这里找到一个例子: http://mcpmag.com/articles/2004/02/01/bind-data-to-winforms-controls.aspx

+0

我认为这有点矫枉过正,因为ListViewItem具有XandrUu想要的Tag属性。 – Aphelion