使用savefileDialog选择文件夹路径。

21

有没有一种方法可以使用对话框窗口获取文件夹路径而不是文件名?

2个回答

62

虽然这是一个老问题,

但我不喜欢那个丑陋的FolderBrowserDialog,所以这里有一个对我有效的技巧,它使用了SaveFileDialog

// Prepare a dummy string, thos would appear in the dialog
string dummyFileName = "Save Here";

SaveFileDialog sf = new SaveFileDialog();
// Feed the dummy name to the save dialog
sf.FileName = dummyFileName;

if(sf.ShowDialog() == DialogResult.OK)
{
    // Now here's our save folder
    string savePath = Path.GetDirectoryName(sf.FileName);
   // Do whatever
}

8
添加 dialog.CheckFileExists = false; 将意味着用户可以在文件夹中浏览而无需选择文件,虚拟文件将被接受。 - Marc
7
SaveFileDialog默认情况下为假(false)。 - C.Evenhuis
缺点是,如果文件名为空,用户将无法单击确定。 :( - Pedro77
1
谢谢您。我已经寻找这个解决方案很长时间了。 - fdsafdsafdsafdsafs
3
我还添加了 sf.Filter = "Directory | directory"; 来隐藏所有文件,以免让用户看到。 - laurentIsRunning

44

请查看FolderBrowserDialog

// Bring up a dialog to chose a folder path in which to open or save a file.
private void folderMenuItem_Click(object sender, System.EventArgs e)
{
    var folderBrowserDialog1 = new FolderBrowserDialog();

    // Show the FolderBrowserDialog.
    DialogResult result = folderBrowserDialog1.ShowDialog();
    if( result == DialogResult.OK )
    {
        string folderName = folderBrowserDialog1.SelectedPath;
        ... //Do your work here!
    }
}

@Luca's:你有检查链接吗?那里有一个相当详细的例子。 - WaltiD
1
这个例子中“太长了!”是告诉你如何打开一个RTF文件,而不是找出如何选择一个文件夹。 - Luca's

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接