saveFileDialog: 文件名无效

saveFileDialog: The file name is not valid

在 Visual Studio 2015 年使用 C# 创建一个应用程序,我想将文件保存到用户想要的任何位置,所以我向我的项目添加了一个 SaveFileDialog 对象,但是在设置属性之后,无论我输入什么文件名,保存对话框都会显示:

The file name is not valid.

(我检查了文件路径和文件名中的字符)。

我的显示对话框的代码:

DialogResult dr = saveFileDialog1.ShowDialog();
if (dr == System.Windows.Forms.DialogResult.OK)
{
     Save(saveFileDialog1.FileName);
}

有什么问题?

您应该删除过滤器 属性 周围的双引号。

在代码中应该是

saveFileDialog1.Filter = "Product list|*.json";

双引号似乎混淆了 SaveFileDialog 对键入名称有效性的检查。 (注意文本在 'Save as Type' 组合框中的显示方式)。
此外,如果您键入带有扩展名的完整文件名,此错误似乎就会消失。

起初似乎是您的特定过滤器文本导致了问题,因为它被解释为描述,而不是后跟 | 的强制性描述。以及过滤器规范要求的扩展。

但如果你这样写也是

saveFileDialog1.Filter = "\"Product files|*.json\"|*.json";

您将收到一个参数异常错误,指出提供的过滤器字符串缺少所需的格式。

所以这里唯一的结论是不能在Filter字符串中使用双引号。