如何获取列表框中所有选定项的数组?

时间:2018-12-21 20:56:05

标签: c# winforms

我有一个ListBox,列出了目录中的所有.mp3文件。该程序允许用户轻松选择其中一些.mp3文件并编辑ID3标签(文件属性-如艺术家,专辑,标题等)。但是,我找不到一种方法来获取用户选择的 all 个项目的数组,而不仅仅是一个。

我已经看到了如何获得一个选定的项目(listBox.SelectedValue),但是当我在选择模式属性中使用MultiSimple时,我经常会有多个选定的项目(允许我选择多个项目而不是一个)。据我所知,无法进行类似listBox.SelectedValue[2]listBox.Item.IndexOf(2).Selected()的操作。

string[] selectedItems = new string[allMusicBox.SelectedItems.Count];
// A count of how many items have been added to the selected items array
int addedSelectedItems = 0;
for (int i = 0; i < allMusicBox.Items.Count; i++) {
    if (allMusicBox.Items.IndexOf(i).Selected) {
        selectedItems[addedSelectedItems] = allMusicBox.Items.IndexOf(i).ToString();
        addedSelectedItems++;
    }
}

那边的代码实际上不起作用,但这符合我所寻找的内容。我想知道如何检查是否选中了该项目(在“ i”位置),然后将其添加到“ selectedItems”数组中。

2 个答案:

答案 0 :(得分:2)

SelectedItems属性是所有选定项的集合。您无需遍历所有项目即可查看它们是否被选中,因为您可以使用allMusicBox.SelectedItems

Here is the MS docn

如果您确实需要将收藏集转换为列表,请查看此SO问题/答案Fastest Convert from Collection to List<T>

答案 1 :(得分:0)

我认为您需要查看SelectedItems属性:

    foreach (var item in listBox1.SelectedItems)
    {
        Console.WriteLine(item);
    }