使用 GetSaveFileName 创建 SaveFileDialog 时如何停止覆盖提示

Posted

技术标签:

【中文标题】使用 GetSaveFileName 创建 SaveFileDialog 时如何停止覆盖提示【英文标题】:How to stop overwriteprompt when creating SaveFileDialog using GetSaveFileName 【发布时间】:2011-04-01 11:31:28 【问题描述】:

我想停止使用 Windows API 方法调用在 SaveFileDialog 弹出文件替换对话框。 我只想这样做,因为我使用用户提供的文件名创建了一个新文件夹,因此存在另一个同名文件不是问题......

实际上我使用 Windows 函数创建 savefiledialog - GetSaveFileName 因为我已经使用 hookProc 自定义了对话框...如果有人知道请回答...

谢谢

【问题讨论】:

想展示你目前的成果吗? 如果提示你替换文件,那么存在另一个同名文件,IS,问题。 不,实际上我想使用用户提供的文件名创建一个文件夹,因为我必须保存许多文件(根据我的应用程序不同的模式),最好将它们保存在文件夹...谢谢 实际上我使用 Windows 函数创建 savefiledialog - GetSaveFileName 因为我已经使用 hookProc 自定义了对话框...如果有人知道请回答... 【参考方案1】:

试试这个:

SaveFileDialog dialog = new SaveFileDialog();
dialog.OverwritePrompt = false; //Removes warning
dialog.ShowDialog();

【讨论】:

【参考方案2】:

如果我误解了您的要求,我会更新此内容(如果您提供当前代码,我很抱歉。 但是,你可以这样做:

yourSaveFileDialog.OverwritePrompt = false;

抑制覆盖提示

【讨论】:

【参考方案3】:

在我看来,您实际上希望用户选择文件夹,这样您就可以用文件填充它。在这种情况下,您应该使用 FolderBrowserDialog。它旨在让用户选择一个文件夹。

【讨论】:

【参考方案4】:

实际上我终于可以找到我的问题的解决方案,我想把它放在这里,因为我认为它可能对某人有用......

使用 GetSaveFileName Windows 函数创建 SaveFileDialog 时,我们必须发送对 OPENFILENAME 结构的引用(将其视为 ofn),其中包含创建 savefiledialog 所需的详细信息。在这个结构中,我们必须为我们需要的东西设置标志,因此如果我们想停止覆盖提示,我们不应该为它设置标志:

标志设置应该是 ofn.Flags = OFN_EXPLORER | OFN_PATHMUSTEXIST | OFN_NOTESTFILECREATE | OFN_ENABLEHOOK | OFN_HIDEREADONLY;

而不是

ofn.Flags = OFN_EXPLORER | OFN_PATHMUSTEXIST | OFN_NOTESTFILECREATE | OFN_ENABLEHOOK | OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT;

【讨论】:

【参考方案5】:

来自 .NET SDK:

SaveFileDialog 类

...

属性

...

OverwritePrompt - 获取或设置一个值,指示 “另存为”对话框是否显示警告,如果 用户指定了一个已经存在的文件名。

您可以将对话框的属性设置为 false 以禁用覆盖提示。

【讨论】:

【参考方案6】:

您可以像这样将 OverwritePrompt 属性设置为 false:

 SaveFileDialog dialog = new SaveFileDialog();
 dialog.OverwritePrompt = false;
 dialog.ShowDialog();

【讨论】:

@dia 您可以拥有相同的文件和文件夹名称,因此不应弹出替换对话框。检查您在该文件夹中是否已有相同的文件名

以上是关于使用 GetSaveFileName 创建 SaveFileDialog 时如何停止覆盖提示的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MacOS 下使用 QFileDialog::getSaveFileName(...)

在 QFileDialog::getSaveFileName 中指定默认扩展名

如何在 Windows 上使用 GetSaveFileName 检测“另存为类型:”组合框何时更改?

C 从 GetSaveFileName() 返回的字符包含空字符

使用 GetSaveFileName。我指定了 OFN_EXPLORER 标志,但总是得到旧的对话框外观,除非我避免同时使用钩子和模板

QFileDialog::getSaveFileName() 在文件对话框中点击保存后返回一个空字符串