WinForm:表示foreach语句中的单个ListBox项

时间:2010-08-26 13:07:40

标签: winforms listboxitem

如何在foreach语句的列表框中重复单个项目?

我尝试过ListBoxItem,但System.Windows.Controls在我的.Net框架(版本4)中不被视为有效的命名空间。

foreach(ListBoxItem item in listBoxObject.Items)
{
    ...
}

3 个答案:

答案 0 :(得分:1)

foreach(Object item in listBoxObject.Items){ ... }

http://msdn.microsoft.com/en-us/library/system.windows.forms.listbox.objectcollection.item.aspx

ListBox.Items的类型为System.Windows.Forms.ListBox.ObjectCollection System.Windows.Forms.ListBox.ObjectCollection.Item的类型为Object。 HTH。

答案 1 :(得分:1)

您会发现listBoxObject.Items是一个对象集合,包含您的数据对象而不是控件。

例如,如果我像这样绑定列表框:

listBox1.DataSource = new string[] { "asdf", "qwerty" };

然后.Items属性产生一个包含两个字符串的ObjectCollection

答案 2 :(得分:1)

通常,当某人循环浏览列表框项目时,他们希望确定是否选中了这些项目。如果是这种情况,请尝试使用listBoxObject.SelectedItems而不是listBoxObject.Items。这将仅返回已选择的项目。

据我所知,没有ListBoxItem对象。您将需要为每个项目使用Object(这是seletecteditems和items返回的内容)。 Object表示项的值,因此相应地使用它(意味着,如果对象是字符串,则将其用作字符串,但如果对象是复杂对象,则使用它)。

代码示例:

foreach (Object listBoxItem in listBoxObject.SelectedItems)
{
  //Use as object or cast to a more specific type of object.
}

如果您知道对象将始终是什么,您可以将其转换为foreach循环。 (警告:如果你错了,这将抛出异常)。此示例是仅将字符串输入列表框。

foreach (String listBoxItem in listBoxObject.SelectedItems)
{
  //Use as String. It has already been cast. 
}