如何获取文件夹选择对话框选中的目标文件夹路径
解决Windows API Code Pack-Shell文件夹选择窗口的路径获取问题
嗨,我之前也踩过这个坑!你用CommonOpenFileDialog调出文件夹选择窗口后,不能直接把对话框对象或者弹窗结果转成字符串来拿路径——这俩返回的都不是你要的实际路径。
给你说正确的做法:
- 首先确保你已经把对话框设置为文件夹选择模式(如果没加这步,默认是选文件的):
dialog.IsFolderPicker = true; - 调用
ShowDialog()得到结果后,只要结果是CommonFileDialogResult.Ok,就可以通过对话框的Folder.Path属性直接获取选中文件夹的完整路径。
举个完整的代码例子:
using Microsoft.WindowsAPICodePack.Dialogs; // 初始化文件夹选择对话框 var folderDialog = new CommonOpenFileDialog(); folderDialog.IsFolderPicker = true; folderDialog.Title = "请选择目标文件夹"; // 显示对话框并获取结果 CommonFileDialogResult dialogResult = folderDialog.ShowDialog(); // 判断用户是否确认选择 if (dialogResult == CommonFileDialogResult.Ok) { // 这里就是你要的选中文件夹路径 string selectedFolderPath = folderDialog.Folder.Path; Console.WriteLine($"选中的文件夹路径:{selectedFolderPath}"); }
为啥你之前的方法不行?
Convert.ToString(dialog)其实是调用了对话框对象的默认ToString()方法,只会返回类的属性描述,不是实际路径;Convert.ToString(result)返回的是枚举值CommonFileDialogResult的名称(比如"Ok"),当然拿不到路径啦。
内容的提问来源于stack exchange,提问作者Jumanji




