我有一个包含2列的DataTable,名为" ID"和"软件"我用作lst_Software多选列表框的数据源。
我正在尝试收集已选中的所有选定项目的ID,并将其放在int []数组中。
列表框设置:
lst_Software.DataSource = software; //software is a DataTable
lst_Software.DisplayMember = "Software";
lst_Software.ValueMember = "ID";
我已尝试过
List<int> list = new List<int>();
for (int i = 0; i < lst_Software.SelectedItems.Count; i++)
{
list.Add(Convert.ToInt32(lst_Software.SelectedValue.ToString()));
}
int[] software = list.ToArray();
我发现我只获得了第一个选定的值,除了它不会遍历所有...我知道为什么。我没有使用 i 来通过for循环。我希望有人可以给我一个方向来迭代所有选定的值。
谢谢
答案 0 :(得分:1)
你在循环中使用lst_Software.SelectedValue.ToString()
所以它只返回一个项目。你有一个for循环,但你没有使用索引变量。但是,所有这些都是不必要的,实际上你需要的只是;
var items = lst_Software.SelectItems;
由于该属性已经是所选项目的列表。从那里你可以随意转换/转换它们。
答案 1 :(得分:0)
SelectedValue
只是第一个选定的值。您需要使用SelectedItems
。