我有一个带有整数的ListBox,它从SQL数据库中获取它们。现在我想把这些元素放入List中,当它们被选中但不知何故它不会起作用。这是代码:
List<Int32>typeElements = new List<Int32>();
if(form1.listBox.SelectedIndex != -1)
{
foreach (var selectedItem in form1.listBox.SelectedItems)
{
typeElements.Add(selectedItem);
}
}
他告诉我他不能将对象转换为int,并且该方法有一些无效的参数。如何处理?
答案 0 :(得分:2)
ListBox.SelectedItems是一个对象的集合。您不能简单地从此集合中获取元素并将其添加到类型的整数列表中。 您需要转换
typeElements.Add(Convert.ToInt32(selectedItem));
如果您想使用Linq和IEnumerable扩展,那么您可以在一行中编写循环
// List<Int32>typeElements = new List<Int32>();
List<Int32> typeElements = form1.listBox.Items.Cast<int>().ToList();
修改强>
在您的评论之后,您需要从DataRowView
DataRow row = (selectedItem as DataRowView).Row;
typeElements.Add(row.Field<int>("NameOfYourDataBaseIntegerField"));
答案 1 :(得分:0)
试试这个(使用System.Linq):
OfType()
是一种扩展方法,因此您需要使用System.Linq
List<Int32> selectedFields = new List<Int32>();
selectedFields.AddRange(listbox.CheckedItems.OfType<Int32>());
或者只是一行:
List<Int32> selectedFields = listbox.CheckedItems.OfType<Int32>().ToList();