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

Winforms WinForm:表示foreach语句中的单个ListBox项,winforms,listboxitem,Winforms,Listboxitem,如何在foreach语句的列表框中重复发送单个项 我已尝试ListBoxItem,但System.Windows.Controls在我的.Net framework(版本4)中被视为无效命名空间 foreach(listBoxObject.Items中的对象项){…} 是一种 System.Windows.Forms.ListBox.ObjectCollection.Item的类型为Object。HTH.您会发现listBoxObject.Items是一个对象集合,包含数据对象而不是控件 例如

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

我已尝试ListBoxItem,但System.Windows.Controls在我的.Net framework(版本4)中被视为无效命名空间

foreach(listBoxObject.Items中的对象项){…}

是一种
System.Windows.Forms.ListBox.ObjectCollection.Item的类型为Object。HTH.

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

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

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

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

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

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

代码示例:

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

对于Winforms,请使用
System.Windows.Forms
命名空间中的类。如果您删除项目中
System.Windows.Controls
的所有using语句,您可能会发现这很有帮助。我现在无法访问.NET 4,但我认为您可能可以使用.Cast()如果可以确保所有对象都属于同一类型的T,则扩展.Items以强制转换到列表。使用对象类型的问题是,我希望将“item”作为列表框项进行交互。除非我将“项”识别为列表框项,否则以下代码将不起作用。代码片段:foreach(listBoxObject.Items中的对象项){if(item.Selected)listBoxObject2.Add(item.Value);}谢谢!我特别需要知道列表框项目没有对象类型!看起来很傻,你可以有一个集合,但不是一个单一的实体。
foreach (String listBoxItem in listBoxObject.SelectedItems)
{
  //Use as String. It has already been cast. 
}