C# 从列表框中提取多个值成员
我有一个列表框,用户可以从中选择多行,该列表框基本上包含用户拥有的宠物列表,每个宠物都有一个参考,显示宠物名称,每个项目值成员都是该宠物的参考。如果用户在列表框中选择了多个宠物,我希望提取每个值成员,以便处理它们,到目前为止,这是我的代码:C# 从列表框中提取多个值成员,c#,winforms,data-binding,C#,Winforms,Data Binding,我有一个列表框,用户可以从中选择多行,该列表框基本上包含用户拥有的宠物列表,每个宠物都有一个参考,显示宠物名称,每个项目值成员都是该宠物的参考。如果用户在列表框中选择了多个宠物,我希望提取每个值成员,以便处理它们,到目前为止,这是我的代码: string lvCat; foreach (Object selectedCat in lstCustCats.SelectedItems) { lvCat = selectedCat
string lvCat;
foreach (Object selectedCat in lstCustCats.SelectedItems)
{
lvCat = selectedCat as String;
DataRow Cats = dSSystem.Bookings_Cats.NewRow();
Cats["BookRef"] = lblBookingRefR.Text;
Cats["CatRef"] = lvCat;
dSSystem.Bookings_Cats.Rows.Add(Cats);
this.bookings_CatsTableAdapter.Update(this.dSSystem.Bookings_Cats);
}
这段代码为每个选定的项目获取列表框中的第一个项目,但不遍历列表框,您知道如何实现这一点吗
谢谢您正在尝试执行
lvCat=selectedCat作为字符串
这是错误的,因为lstCustCats.SelectedItems
中的项不是字符串。
这应该行得通
lvCat = selectedCat.ToString();
我把它标记为复制品,但它离我们很近。
在运行该代码之后,如果您在lvCat中获得了一个类名,那么这就是类
selectedCat
的类型。在这种情况下,您可以将selectedCat
强制转换为该类型,然后从该类型继续您尝试将lvCat=selectedCat作为字符串执行
这是错误的,因为lstCustCats.SelectedItems
中的项不是字符串。
这应该行得通
lvCat = selectedCat.ToString();
我把它标记为复制品,但它离我们很近。
在运行该代码之后,如果您在lvCat中获得了一个类名,那么这就是类
selectedCat
的类型。在这种情况下,您可以将selectedCat
强制转换为该类型并从该类型继续您是否尝试设置断点并检查以确保lstCustCats.SelectedItems
实际包含所选项?此代码应迭代所有所选ListBoxItems,看不到任何失败!foreach的行为如何?获取SelectedItems的第一个对象后是否退出?也许你刚刚选了一个?请更详细地解释你的最后一句话。第一项是什么?如果它“针对每个选定的项”得到任何信息,它如何不在列表中迭代?@sine-Well它会很好地通过,直到它应该将value成员分配给lvCat变量,而不是将“null”分配给变量,即使输入了value member属性。您说的selectedCat as String
将null
赋值给lvCat
,这意味着到String
的类型转换失败。您确定列表中的所有项目都是string
类型吗?因为在循环标题中,您将它们视为对象,但在正文中,您将它们视为字符串。您是否尝试设置断点并检查以确保lstCustCats.SelectedItems
实际包含所选项目?此代码应迭代所有所选ListBoxItems,看不到任何失败!foreach的行为如何?获取SelectedItems的第一个对象后是否退出?也许你刚刚选了一个?请更详细地解释你的最后一句话。第一项是什么?如果它“针对每个选定的项”得到任何信息,它如何不在列表中迭代?@sine-Well它会很好地通过,直到它应该将value成员分配给lvCat变量,而不是将“null”分配给变量,即使输入了value member属性。您说的selectedCat as String
将null
赋值给lvCat
,这意味着到String
的类型转换失败。您确定列表中的所有项目都是string
类型吗?因为在循环头中,您将它们视为对象,但在循环体中,您将它们视为字符串,而不管它们是什么。如果selectedCat
是自定义类型,则在其上运行ToString()
将返回对象类型(假设对象不重写此方法),在这种情况下,该类型是无用的。他需要将对象强制转换为任何类型,然后访问该对象上的属性/方法。@PoweredByOrange如果是自定义类型,那么至少他会知道是哪种类型。如果selectedCat
是一个自定义类型,在其上运行ToString()
将返回对象类型(假设该对象不重写此方法),则在这种情况下该类型无效。他需要将对象强制转换为任何类型,然后访问该对象上的属性/方法。@PoweredByOrange如果是自定义类型,那么至少他会知道是哪种类型。我将把它添加到答案中