FolderBrowserDialog
类来自System.Windows.Forms
,是显示允许用户选择文件夹的对话框的推荐方法。
直到最近,此对话框的外观和行为与其他文件系统对话框不一致,这也是人们不愿使用它的原因之一。
好消息是,FolderBrowserDialog
在.NET Core 3.0中进行了“现代化”,因此现在对于那些针对该版本或更高版本编写Windows Forms或WPF应用程序的人来说,这是一个可行的选项。
在.NET Core 3.0中,Windows Forms用户可以使用引入Windows Vista的更新COM控件:![FolderBrowserDialog in NET Core 3.0](https://istack.dev59.com/YyZ6o.webp)
要在NET Core WPF应用程序中引用System.Windows.Forms
,需要编辑项目文件并添加以下行:
<UseWindowsForms>true</UseWindowsForms>
这可以直接放置在现有的 <UseWPF>
元素之后。
然后只需要使用对话框:
using System;
using System.Windows.Forms;
...
using var dialog = new FolderBrowserDialog
{
Description = "Time to select a folder",
UseDescriptionForTitle = true,
SelectedPath = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory)
+ Path.DirectorySeparatorChar,
ShowNewFolderButton = true
};
if (dialog.ShowDialog() == DialogResult.OK)
{
...
}
FolderBrowserDialog
有一个RootFolder
属性,据说可以“设置浏览开始的根文件夹”,但无论我将其设置为什么,都没有任何区别。似乎SelectedPath
是更好地用于此目的的属性,然而需要包含尾随反斜杠。
此外,ShowNewFolderButton
属性似乎也被忽略了,按钮总是显示出来。