【问题标题】:Get Folder Path from SaveFileDialog before saving the file在保存文件之前从 SaveFileDialog 获取文件夹路径
【发布时间】:2020-04-16 23:33:37
【问题描述】:

我在我的应用程序中使用SaveFileDialog。有没有办法在实际保存文件之前获取用户选择的文件夹路径?我知道我可以在保存文件后获取文件夹路径,但在保存文件之前我需要文件夹路径。我需要使用文件夹名称来设置文件名,例如如果用户选择名为“ABC”的文件夹,“文件名”文本框中的文件名设置为“ABC10001”,下一个文件将是“ABC10002”等。

我知道我可以使用 FolderBrowserDialog,但我不太喜欢 UI。我还想为用户提供一个选项来覆盖 FolderBrowserDialog 无法覆盖的文件名。

private void Button_Click(object sender, EventArgs e)
    {
        SaveFileDialog saveFileDialog = new SaveFileDialog();
        saveFileDialog.InitialDirectory = @"C:\";      
        saveFileDialog.Title = "Save text Files";
        saveFileDialog.CheckFileExists = true;
        saveFileDialog.CheckPathExists = true;
        saveFileDialog.DefaultExt = "txt";
        saveFileDialog.Filter = "Text files (*.txt)|*.txt|All files (*.*)|*.*";
        saveFileDialog.FilterIndex = 2;
        saveFileDialog.RestoreDirectory = true;
        if (saveFileDialog.ShowDialog() == DialogResult.OK)
        {
            string folderPath = Path.GetDirectoryName(saveFileDialog.FileName);
        }
    }

任何帮助将不胜感激。

提前致谢。

【问题讨论】:

    标签: c#


    【解决方案1】:

    SaveFileDialog 只支持选择文件,不支持选择文件夹。但是在通过调用SaveFileDialog.ShowDialog() 得到DialogResult 后,您可以在SaveFileDialog.FileName 上使用Path.GetDirectoryName() 来检索文件夹名称。

    您也可以使用WindowsAPICodePack 包中的CommonOpenFileDialog 来允许用户选择文件夹。

    【讨论】:

    • 我将研究 CommonOpenFileDialog。谢谢。
    【解决方案2】:

    这是工作代码:

    [STAThread]
        static void Main(string[] args)
        {
            CommonSaveFileDialog saveFileDialog = new CommonSaveFileDialog();
            saveFileDialog.FolderChanging += SaveFileDialog_FolderChanging;
            saveFileDialog.ShowDialog();
        }
    
        private static void SaveFileDialog_FolderChanging(object sender, CommonFileDialogFolderChangeEventArgs e)
        {
            Console.WriteLine(e.Folder);
        } 
    

    【讨论】:

      猜你喜欢
      • 2016-01-28
      • 1970-01-01
      • 2011-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-03
      • 1970-01-01
      • 2019-02-01
      相关资源
      最近更新 更多