首页 > 解决方案 > 如何获取 ListBox 中所有选定项目的数组?

问题描述

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

我已经了解了如何获取一个选定的项目 ( listBox.SelectedValue),但是当我用于选择模式属性时,我通常会拥有多个选定的项目MultiSimple(允许我选择多个项目而不仅仅是一个)。据我所知,没有办法做类似listBox.SelectedValue[2]or的事情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”数组中。

标签: c#winforms

解决方案


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

这是 MS 文档

如果您确实需要将集合转换为列表,请查看此 SO question/answer Fastest Convert from Collection to List<T>


推荐阅读