c# - 使用 .NET 3.5 选择文件夹

标签 c# .net wpf winforms

在 C# .NET 3.5 应用程序(WinForms 和 WPF 的混合)中,我想让用户选择一个文件夹以从中导入大量数据。目前,它正在使用 System.Windows.Forms.FolderBrowserDialog 但这有点蹩脚。主要是因为你不能在其中输入路径(所以你需要映射一个网络驱动器,而不是输入一个 UNC 路径)。

我想要更像 System.Windows.Forms.OpenFileDialog 的东西,但用于文件夹而不是文件。

我可以用什么代替? WinForms 或 WPF 解决方案很好,但如果可以避免的话,我不希望 PInvoke 进入 Windows API。

最佳答案

不要自己创建!已经完成了。您可以使用 FolderBrowserDialogEx - 内置 FolderBrowserDialog 的可重用派生。这允许您输入路径,甚至是 UNC 路径。您还可以使用它浏览计算机或打印机。就像内置的 FBD 一样工作,但是......更好。

完整的源代码。自由的。 MS-公共(public)许可证。

FolderBrowserDialogEx

使用代码:

var dlg1 = new Ionic.Utils.FolderBrowserDialogEx();
dlg1.Description = "Select a folder to extract to:";
dlg1.ShowNewFolderButton = true;
dlg1.ShowEditBox = true;
//dlg1.NewStyle = false;
dlg1.SelectedPath = txtExtractDirectory.Text;
dlg1.ShowFullPathInEditBox = true;
dlg1.RootFolder = System.Environment.SpecialFolder.MyComputer;

// Show the FolderBrowserDialog.
DialogResult result = dlg1.ShowDialog();
if (result == DialogResult.OK)
{
    txtExtractDirectory.Text = dlg1.SelectedPath;
}

关于c# - 使用 .NET 3.5 选择文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45988/

相关文章:

c# - 隐式转换为 Func 或 Action 委托(delegate)?

c# - 在 C# 中引用 VBA 程序集

c# - 在没有引用的情况下记录整个类库

c# - 如何在字典的第一个索引中插入元素?

c# - WPF 中 ComboBox 上的 zIndex?

c# - 如何为我的类属性使用与 sql 列名称不同的名称

c# - 无法找到程序集 Entity Framework v 4.4.0.0

c# - 无法在方法调用中将字典转换为 IDictionary

c# - 在 StackPanel wpf 中包装内容

.net - System.Reactive 5.0 中缺少 DispatcherScheduler