使用 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 标志,但总是得到旧的对话框外观,除非我避免同时使用钩子和模板