【发布时间】:2013-07-31 18:10:11
【问题描述】:
我有一个列表框,用户可以从中选择多行,这个列表框基本上包含用户拥有的宠物列表,每个宠物都有一个引用,显示宠物名称,每个项目值成员是那只宠物的参考。如果用户在列表框中选择了多个宠物,我想提取每个值成员以便处理它们,到目前为止这是我拥有的代码:
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);
}
此代码为每个选定项目获取列表框中的第一个项目,但不遍历列表框,知道如何完成此操作吗?
谢谢
【问题讨论】:
-
您是否尝试过设置断点并检查以确保
lstCustCats.SelectedItems实际包含所选项目? -
这段代码应该遍历所有选定的 ListBoxItems,看不到任何失败! foreach 的行为如何?获取 SelectedItems 的第一个对象后退出?也许您刚刚选择了一个?
-
请详细解释你的最后一句话。第一项是什么?如果它“为每个选定的项目”得到任何东西,它如何不遍历列表?
-
@sine 很好,直到它应该将 value 成员分配给 lvCat 变量,而不是将“null”分配给变量,即使输入了 value 成员属性。
-
您说
selectedCat as String将null赋值给lvCat,这意味着到string的类型转换失败。您确定列表中的所有项目都是string类型吗?因为在你的循环头中你将它们视为对象,但在正文中你将它们视为字符串。
标签: c# winforms data-binding