如何在foreach语句的列表框中重复单个项目?
我尝试过ListBoxItem,但System.Windows.Controls在我的.Net框架(版本4)中不被视为有效的命名空间。
foreach(ListBoxItem item in listBoxObject.Items)
{
...
}
答案 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.
}