1

我使用 Microsoft® .NE​​T Framework 的 Windows® API 代码包中的 CommonOpenFileDialog 类,该类实现了 IFileOpenDialog 接口。

有关 Windows API CodePack 的更多信息:http: //archive.msdn.microsoft.com/WindowsAPICodePack

问题:如果在“打开文件对话框”对话框窗口中选择了(多个文件夹)或(多个文件夹和文件),则 以下方法返回第一个选定的文件夹。

IFileOpenDialog.GetSelectedItems([MarshalAs(UnmanagedType.Interface)] out IShellItemArray ppsai)

无论我在那里选择了什么,如何将 IFileOpenDialog 窗口中的所有选定元素(文件夹和文件)作为 IShellItem 列表返回?

4

1 回答 1

2

您需要指定Multiselect属性。

这是一个未编组的示例:

CommonOpenFileDialog folderDialog = new CommonOpenFileDialog("Input Folder Selection");
        folderDialog.IsFolderPicker = true;
        folderDialog.Multiselect = true;

        if (folderDialog.ShowDialog() == CommonFileDialogResult.Ok)
        {
            foreach (string folderName in folderDialog.FileNames)   //it's a little confusing, but FileNames represents folders as well in the API
            {
                // do something
            }
        }
于 2014-09-24T23:59:29.047 回答