【问题标题】:C# SaveFileDialog in specific folderC# SaveFileDialog 在特定文件夹中
【发布时间】:2012-02-06 00:52:58
【问题描述】:

我使用SaveFileDialog 选择要保存文件的路径。我将InitialDirectory 设置为某个文件夹,但我想将保存位置限制为该文件夹或该文件夹的子文件夹。这可能吗?

SaveFileDialog dialog = new SaveFileDialog();
dialog.InitialDirectory = "SomePath"//this is the path that I want to be root folder

【问题讨论】:

  • 对不起,但我想不出什么时候这应该有用。要么让用户控制保存位置,要么只保存文件。你能解释一下你为什么要这样做吗?
  • 我有一个编辑器,用于编辑捆绑包中的文件(它将按原样复制到设备中)。我不想让用户能够将文件保存在其他文件夹中——它们最终不会被复制,这可能会导致奇怪的错误。

标签: c# savefiledialog


【解决方案1】:

不,这是不可能的。

您不能直接将此设置为SaveFileDialog 上的属性。但是您可以尝试通过使用FileOk 事件来验证文件是否在该目录中,否则取消该事件!

dialog.FileOk +=
    delegate (object sender, CancelEventArgs e)
    {
        if (dialog.FileName is in wrong directory)
        {
            e.Cancel = true;
        }
    };

如前所述,下一个最佳选择是构建自己的对话框!

【讨论】:

  • 如果用户从其他文件夹中选择文件我不想取消,我不想让他选择其他文件夹。
  • 您只会取消选择,不会取消对话框。
【解决方案2】:

想到的一些解决方案是:

文件选择后显示错误

不如一开始就阻止用户,但它不需要很多代码并且非常简单。

构建您自己的文件选择屏幕

让任何东西看起来像用户习惯的东西是非常痛苦的。需要大量代码。

【讨论】:

    【解决方案3】:

    我能想到的可能是题外话,因为它与编程没有太大关系,而且可能很困难。

    在安装您的应用程序时,您应该在 Windows 上为您的应用程序创建一个特定用户。

    比你可以开始你的应用程序。作为使用应用程序的用户。清单文件。

    之后,您可以授予该特定用户仅在根文件夹中写入的权限,这就是操作系统将如何控制它的方式。

    PS : 我不认为这个解决方案是否会自行支付,但它可能会奏效。

    敬礼

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-11
      相关资源
      最近更新 更多