listBoxXmlFilesReference

listBoxXmlFilesReference

如果没有选择或选择一项,我试图从 ListBox 获取所有元素的列表,或者如果选择了 1 个以上,则获取所选项目的列表。我写了这样的代码,但它不能编译:

    ListBox.ObjectCollection listBoXElemetsCollection;

    //loading of all/selected XMLs to the XPathDocList
    if (listBoxXmlFilesReference.SelectedIndices.Count < 2)
    {
        listBoXElemetsCollection = new ListBox.ObjectCollection(listBoxXmlFilesReference);
    }
    else
    {
        listBoXElemetsCollection = new ListBox.SelectedObjectCollection(listBoxXmlFilesReference);
    }

所以为了让这段代码工作,我需要使用类似 ListBox.SelectedObjectCollection listBoxSelectedElementsCollection; 的东西,我不想要它,因为我想在这样的 foreach 中使用它:
            foreach (string fileName in listBoXElemetsCollection)
            {
            //...
            }

最佳答案

如果您不需要,我会简单地处理一下,而不是弄乱 ListBox ObjectCollections。既然您想将 ListBox 上的项目作为字符串进行迭代,为什么不使用 List 并加载您显示的列表:

List<string> listItems;

if (listBoxXmlFilesReference.SelectedIndices.Count < 2) {
    listItems = listBoxXmlFilesReference.Items.Cast<string>().ToList();
} else {
    listItems = listBoxXmlFilesReference.SelectedItems.Cast<string>().ToList();
}

foreach (string filename in listItems) {
    // ..
}

10-08 08:47