我想停止使用 Windows API 方法调用在 SaveFileDialog 弹出文件替换对话框。我只想这样做,因为我使用用户提供的文件名创建了一个新文件夹,因此存在另一个同名文件不是问题......
实际上,我使用 Windows 函数创建 savefiledialog - GetSaveFileName 因为我已经使用 hookProc 自定义了对话框...如果有人知道,请回答...
谢谢
我想停止使用 Windows API 方法调用在 SaveFileDialog 弹出文件替换对话框。我只想这样做,因为我使用用户提供的文件名创建了一个新文件夹,因此存在另一个同名文件不是问题......
实际上,我使用 Windows 函数创建 savefiledialog - GetSaveFileName 因为我已经使用 hookProc 自定义了对话框...如果有人知道,请回答...
谢谢
试试这个:
SaveFileDialog dialog = new SaveFileDialog();
dialog.OverwritePrompt = false; //Removes warning
dialog.ShowDialog();
如果我误解了您的要求,我会更新此内容(如果您提供当前代码,我很抱歉。但是,您可以这样做:
yourSaveFileDialog.OverwritePrompt = false;
禁止覆盖提示
在我看来,您实际上希望用户选择文件夹,以便您可以用文件填充它。在这种情况下,您应该使用 FolderBrowserDialog。它旨在让用户选择一个文件夹。
实际上我终于可以找到我的问题的解决方案,我想把它放在这里,因为我认为它可能对某人有用......
When creating the SaveFileDialog using GetSaveFileName Windows function, we have to send a reference to an OPENFILENAME struct (consider it as ofn) which contains details required to create the savefiledialog. In this struct, we have to set flags for what we need, thus if we want to stop the overwrite prompt, we should not set a flag for it:
The flag setting should be ofn.Flags = OFN_EXPLORER | OFN_PATHMUSTEXIST | OFN_NOTESTFILECREATE | OFN_ENABLEHOOK | OFN_HIDEREADONLY;
instead of
ofn.Flags = OFN_EXPLORER | OFN_PATHMUSTEXIST | OFN_NOTESTFILECREATE | OFN_ENABLEHOOK | OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT;
从 .NET SDK:
SaveFileDialog 类
...
特性
...
OverwritePrompt - 获取或设置一个值,该值指示如果用户指定的文件名已存在,“另存为”对话框是否显示警告。
您可以将对话框的属性设置为 false 以禁用覆盖提示。
您可以将 OverwritePrompt 属性设置为 false,如下所示:
SaveFileDialog dialog = new SaveFileDialog();
dialog.OverwritePrompt = false;
dialog.ShowDialog();