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

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

【问题讨论】:

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

标签: c# 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,它只要求提供文件名并在代码中构建您的完整文件名。

【讨论】:

  • 谢谢。我认为这篇文章现在在重复问题之上添加了一些内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-06
  • 2018-02-24
  • 1970-01-01
  • 2019-12-08
  • 2011-10-27
相关资源
最近更新 更多