将 ListBox 中的元素添加到 List

Adding elements from a ListBox to a List

我有一个带有整数的列表框,它从 SQL 数据库中获取整数。现在我想在选择这些元素时将它们放入列表中,但不知何故它不起作用。这是代码:

List<Int32>typeElements = new List<Int32>();

if(form1.listBox.SelectedIndex != -1)   
{
    foreach (var selectedItem in form1.listBox.SelectedItems)
    {
        typeElements.Add(selectedItem);
    }
}

他告诉我他不能将 object 转换为 int 并且该方法有一些无效参数。如何处理?

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"));

试试这个(使用 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();