繁体   English   中英

C#-Microsoft.Win32.SaveFileDialog文件名问题

[英]C# - Microsoft.Win32.SaveFileDialog Filename Issue

我有一个问题,如果您将对话框中的文件名设置为您设置的初始目录内的子目录,然后单击“保存”,则对话框窗口实际上不会保存文件,而是打开我要保存的子目录仍然可以与之互动。

例如,如果将对话框的初始目录设置为“ C:\\ MainDir”,并且该目录由SubDir1,SubDir2组成,那么在保存文件对话框中,我可以看到我位于具有两个子目录的初始目录中。 如果在对话框中将文件名设置为SubDir1(无扩展名),然后单击“保存”,则发生的是,不是将文件另存为“ filename.extension”,而是对话框打开了由文件名指定的目录。

这是我目前拥有的:

SaveFileDialog dlg = new SaveFileDialog();
dlg.DefaultExt = ext;
dlg.AddExtension = true;
dlg.FileName = filename;
dlg.Filter = filter;
dlg.FileOk += OnFileDialogOk;
dlg.InitialDirectory = dir;
bool? dlgRes = dlg.ShowDialog();

这是可以轻易解决的吗?

快速解答:不。

您不能覆盖Windows操作系统的默认保存方法。

您可能要做的就是验证您要使用的文件名(在本例中为SubDir)是否已经作为目录存在。 如果确实如此,那么您将需要更改该名称,因为这只会显示您已经看到的行为。

旁注:假设您有一个非常重要的文件夹,其中包含关键文件,而Windows将允许您保存以该目录命名的文件。 那是一场灾难,等待发生。

我想到的唯一方法有些极端:

  • 您可以滚动自己的对话框
  • 您可以修改标准对话框的功能

在这里找到答案: 自定义OpenFileDialog可以帮助您解决问题。

我想我还应该注意,尽管容纳这种输入并自动附加扩展名似乎有所帮助,但对于许多希望使用默认行为的用户来说,这是违反直觉的。

简而言之,我可能会三思而后行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM