将ListBox中的元素添加到List

时间:2015-01-23 13:02:14

标签: c# winforms list listbox

我有一个带有整数的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,并且该方法有一些无效的参数。如何处理?

2 个答案:

答案 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

中提取Integer元素
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();