Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从列表框中提取多个值成员_C#_Winforms_Data Binding - Fatal编程技术网

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如果是自定义类型,那么至少他会知道是哪种类型。我将把它添加到答案中