【问题标题】:C# - Microsoft.Win32.SaveFileDialog Filename IssueC# - Microsoft.Win32.SaveFileDialog 文件名问题
【发布时间】:2016-01-26 16:26:49
【问题描述】:

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

例如,如果我将对话框的初始目录设置为“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 系统保存对话框,它一直是这样工作的。用记事本试试吧。

标签: c#


【解决方案1】:

快速回答:不。

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

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

旁注:想象一下,您有一个非常重要的文件夹,其中包含关键文件,Windows 会让您保存一个以该目录命名的文件。这是一场等待发生的灾难。

【讨论】:

  • 我认为操作不想要SubDir1 文件,我认为他在输入SubDir1 后想要SubDir1.ext 文件,因此目录和文件在保存后都将存在。但你的答案仍然是正确的,没有办法改变这种行为。
  • @ScottChamberlain 正确。这就是我的想法。
【解决方案2】:

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

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

在此处找到的答案:Customizing OpenFileDialog 可以对此有所帮助。

我想我还应该注意,虽然适应这种输入并自动附加扩展名似乎很有帮助,但对于许多期望默认行为的用户来说,这将是违反直觉的。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-25
    • 2011-02-13
    • 1970-01-01
    • 2014-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多