c# savefiledialog 锁定到特定目录? [复制]

Posted

技术标签:

【中文标题】c# savefiledialog 锁定到特定目录? [复制]【英文标题】:c# savefiledialog lock to particular directory? [duplicate] 【发布时间】:2014-03-06 10:56:09 【问题描述】:

如何在 c# 中使用 Savefiledialog 将文件保存到特定目录。打开保存文件对话框时,路径用户不应更改目录。

【问题讨论】:

SaveFileDialog 控件旨在让用户选择路径并显示特定的文件类型。请注意,它不会执行实际的“保存”方法。我认为你在滥用它。 【参考方案1】:

没有直接的方法(例如KeepSameFolder=True 之类的属性)。 您唯一的选择是为FileOK 事件编写一个事件处理程序,如果该文件夹不是您喜欢的文件夹,则取消单击“保存”按钮。 取消事件不会关闭 SaveFileDialog,用户可以修复它的错误

// declare at the global class level
string allowedPath = @"c:\temp";


private void openFileDialog1_FileOk(object sender, CancelEventArgs e)

    if (!Path.GetDirectoryName(openFileDialog1.FileName) == allowedPath )
    
        MessageBox.Show("You should save your file in or a sub folder of: " + allowedPath);
        e.Cancel = true;
                

编辑:在Mr Hofman 的评论之后,如果您允许选择基本路径的子文件夹,那么您应该将事件处理程序中的检查更改为类似

    string userChoice = Path.GetDirectoryName(openFileDialog1.FileName);
    if (!userChoice.StartsWith(allowedPath))
    
        MessageBox.Show("You should save your file in the folder: " + allowedPath);
        e.Cancel = true;
                

但是,正如上面的 cmets 所述,我认为当用户无法选择保存文件的位置时使用 SaveFileDialog 不是一个好的选择。如果文件夹是预定义的,那么只需准备一个可重用的 InputForm,它只要求提供文件名并在代码中构建您的完整文件名。

【讨论】:

谢谢。我认为这篇文章现在在重复问题之上添加了一些内容。

以上是关于c# savefiledialog 锁定到特定目录? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

在 C# 中使用 SaveFileDialog 保存为特定文件格式

C# Open/SaveFileDialog 使用不同的文件系统

不使用 SaveFileDialog 保存文件

如何从 SaveFileDialog.FileName 仅获取目录名称

SaveFileDialog c#的默认文件名

在哪里可以找到 SaveFileDialog 的选定文件路径(C#,Visual Studio)