C# - WPF - 不使用 System.Windows.Forms 获取文件夹浏览器对话框

swift

1个回答

写回答

李贝贝811

2025-07-09 18:54

+ 关注

AI
AI

使用C#的WPF框架开发应用程序时,有时需要提供文件夹浏览器对话框,以便用户选择特定的文件夹路径。通常,我们可以使用System.Windows.Forms命名空间中的FolderBrowserDialog类来实现这个功能。然而,有时我们不希望引用System.Windows.Forms命名空间,而是希望使用纯粹的WPF方式来获取文件夹浏览器对话框。那么,该如何实现呢?

使用WPF方式获取文件夹浏览器对话框的方法

在WPF中,我们可以使用Microsoft.WindowsAPICodePack.Shell命名空间中的CommonOpenFileDialog类来替代FolderBrowserDialog类。这个类提供了更加现代化和灵活的方式来实现文件夹浏览器对话框。

首先,我们需要通过NuGet包管理器安装Microsoft.WindowsAPICodePack和Microsoft.WindowsAPICodePack.Shell这两个包。在Visual Studio中,可以通过右键点击项目,选择“管理NuGet程序包”来打开NuGet包管理器,然后搜索并安装这两个包。

接下来,我们需要在代码文件的头部添加以下引用:

using Microsoft.WindowsAPICodePack.Dialogs;

然后,我们可以使用以下代码来创建并显示文件夹浏览器对话框:

CommonOpenFileDialog dialog = new CommonOpenFileDialog();

dialog.IsFolderPicker = true;

CommonFileDialogResult result = dialog.ShowDialog();

if (result == CommonFileDialogResult.Ok)

{

string folderPath = dialog.FileName;

// 在这里处理用户选择的文件夹路径

}

在上述代码中,我们首先创建了一个CommonOpenFileDialog对象,并将其IsFolderPicker属性设置为true,以指定它是一个文件夹选择对话框。然后,我们调用ShowDialog方法显示对话框,并将返回的结果保存在CommonFileDialogResult类型的变量中。

如果用户选择了一个文件夹并点击了对话框中的“确定”按钮,那么result的值将为CommonFileDialogResult.Ok。我们可以通过dialog.FileName属性来获取用户选择的文件夹路径。

案例代码

下面是一个完整的示例代码,演示如何使用WPF方式获取文件夹浏览器对话框:

csharp

using Microsoft.WindowsAPICodePack.Dialogs;

namespace WpfFolderBrowserDialogExample

{

public partial class MAInWindow : Window

{

public MAInWindow()

{

InitializeComponent();

}

private void BrowseButton_Click(object sender, RoutedEventArgs e)

{

CommonOpenFileDialog dialog = new CommonOpenFileDialog();

dialog.IsFolderPicker = true;

CommonFileDialogResult result = dialog.ShowDialog();

if (result == CommonFileDialogResult.Ok)

{

string folderPath = dialog.FileName;

MessageBox.Show("您选择的文件夹路径是:" + folderPath);

}

}

}

}

在上述代码中,我们在MAInWindow窗口类中添加了一个按钮和一个点击事件处理程序。当用户点击按钮时,会触发BrowseButton_Click方法,其中就包含了获取文件夹浏览器对话框并处理用户选择的文件夹路径的代码。

这个示例代码可以在WPF应用程序中的MAInWindow.xaml文件中进行布局,并将按钮的Click事件绑定到BrowseButton_Click方法,以实现完整的文件夹浏览器对话框功能。

通过使用Microsoft.WindowsAPICodePack.Shell命名空间中的CommonOpenFileDialog类,我们可以在WPF应用程序中实现文件夹浏览器对话框的功能,而无需引用System.Windows.Forms命名空间。这种方式更加现代化和灵活,可以更好地与WPF框架进行集成。希望本文对您有所帮助!

举报有用(4分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号