/// <summary>
/// 选择文件夹
/// </summary>
/// <param name="callBack"></param>
/// <param name="title"></param>
public static void SelectFolder(Action<string> callBack, string title = "请选择文件夹")
{
try
{
OpenDialogDir ofn2 = new OpenDialogDir();
ofn2.pszDisplayName = new string(new char[2048]);
ofn2.lpszTitle = title; // 标题
ofn2.ulFlags = 0x00000040; // 新的样式,带编辑框
IntPtr pidlPtr = SHBrowseForFolder(ofn2);
char[] charArray = new char[2048];
for (int i = 0; i < 2048; i++)
{
charArray[i] = '\0';
}
SHGetPathFromIDList(pidlPtr, charArray);
string res = new string(charArray);
res = res.Substring(0, res.IndexOf('\0'));
if (Directory.Exists(res))
{
callBack?.Invoke(res);
}
}
catch (Exception)
{
}
}
}
SHBrowseForFolder这个函数还有很多api,我看了一下是有可以指定路径打开目录,具体你可以学习了解一下。
另外你也可以参考这篇博客的插件,使用也很方便: