C#在特定文件夹中保存文件对话框

10

我使用SaveFileDialog来选择我想保存文件的路径。我将InitialDirectory设置为某个文件夹,但我希望限制保存位置仅限于该文件夹或该文件夹的子文件夹。这种情况是否可能?

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

抱歉,我无法想到这会有用的情况。 要么你给用户控制保存位置,要么就直接保存文件。 请问您为什么想这样做? - M0rgenstern
1
我有一个编辑器,用于编辑捆绑文件(它将按原样复制到设备上)。我不想让用户能够在其他文件夹中保存文件 - 这些文件最终不会被复制,这可能会导致奇怪的错误。 - Mircea Ispas
3个回答

9

不可能。

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

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

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

如果用户从其他文件夹选择文件,我不想取消操作,也不想让他选择其他文件夹。 - Mircea Ispas
2
您只会取消选择,而不会取消对话框。 - Kolky

0
一些可能的解决方案包括:

在文件选择后显示错误

虽然不如预先防止用户选择,但这不需要太多代码,而且非常直接。

构建自己的文件选择屏幕

非常痛苦,需要大量代码才能使其看起来像用户习惯的任何东西。


0

我能想到的可能与编程无关,而且可能很困难,所以有些离题了。

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

然后,你可以使用应用程序清单文件作为该用户启动你的应用程序。

之后,你可以给那个特定的用户权限只写根目录,这样操作系统就会控制它。

PS:我不认为这个解决方案会回报成本,但它可能有效。

敬礼


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