如何通过单个WinForm对话框获取文件夹或文件路径?

时间:2012-04-30 23:08:19

标签: c# winforms file path dialog

更新:我似乎不清楚我的问题是什么。约翰·阿伦对我的头衔的编辑似乎也引起了更多的误解。标题更改为“我如何获取文件夹或文件路径?”这不是我追求的。我知道有一个对话框可以处理文件,另一个对象可以处理文件夹。我知道这些对话框中的每一个都可以返回文件夹或文件的路径。我说我不确切知道如何获取文件路径,但即使我知道如何这样做也没有帮助我。

正如我原来的问题所述:

  

“我让用户通过某个对话框选择文件夹或文件。我不知道路径是属于文件夹还是文件。一旦用户点击”打开“按钮,我想要当前选定的目录或文件路径存储在字符串中。“

我在这里的意思是我想使用一些可能存在或不存在的对话框。我不知道用户是在文件或文件夹之后。用户知道这一点,但用户不知道路径。这就是使用对话框的原因。用户将搜索所需的文件或文件夹,然后单击“打开”。根据我的需要使用单个对话框更有意义。我想看看是否存在这样的对话框,因为我对.NET Framework的体验有限。

Jared Kells的答案几乎正是我所寻找的。在阅读了他提供的内容后,似乎不存在这样的对话框。我将不得不提供自己的实现。

由于提出我自己的实现可能会耗费时间和困难,我现在暂时不会这样做。如果某人提供了非常有帮助的答案,我会等几天选择答案。

感谢那些贡献的人,即使它不是我所追求的。

原始内容:

我正在寻找获取文件夹或文件的文件路径的方法。我玩OpenFileDialogFolderBrowserDialog但没有取得多大成功。我能够使用FolderBrowserDialog.SelectedPath获取文件夹路径。使用OpenFileDialog类,我无法弄清楚如何获取文件路径。

即使我能弄明白,我仍然处于困境中。我让用户通过某个对话框选择文件夹或文件。我不知道路径是属于文件夹还是文件。一旦用户点击“打开”按钮,我希望当前选择的目录或文件路径存储在字符串中。似乎我使用的每个类都被文件或文件夹困住。

使用WinForms对话框可以实现吗?我此时不想编写自己的对话框。

2 个答案:

答案 0 :(得分:7)

openFileDialog1.ShowDialog();
string filePath = openFileDialog1.FileName;

将为您提供文件的路径。

folderBrowserDialog1.ShowDialog();
string folderPath = folderBrowserDialog1.SelectedPath;

表示文件夹。

string path = ...
if(File.Exists(path))...//is file
if(Directory.Exists(path))...//is folder

检查它是什么。

答案 1 :(得分:2)

有关显示可以同时选择文件和文件夹的常用对话框的一些方法,请参阅此问题。

Select either a file or folder from the same dialog in .NET

根据上述问题的答案,我在C#中创建了一个简单的示例:https://github.com/jkells/folder-browser-dialog-example

您应该只能将FolderBrowserDialogEx.cs复制到项目中。