[英]SaveFileDialog throws System.InvalidOperationException: 'My File.xlsx' is not a valid file name
客户刚刚在我们的应用程序中遇到此错误,这在Microsoft.Win32.SaveFileDialog上调用ShowDialog时基本上就会发生。 完整的堆栈跟踪如下:
System.InvalidOperationException:'My File.xlsx'不是有效的文件名。 位于Microsoft.Win32.FileDialog.RunLegacyDialog(IntPtr hwndOwner)的Microsoft.Win32.FileDialog.RunFileDialog(OPENFILENAME_I ofn)at Microsoft.Win32.FileDialog.RunDialog(IntPtr hwndOwner)at Microsoft.Win32.CommonDialog.ShowDialog(Window owner)at(我们的代码在这里
显示对话框的代码非常标准:
var dialog = new SaveFileDialog
{
Filter = "Excel files (.xlsx)|*.xlsx",
FileName = "My File.xlsx",
};
if (dialog.ShowDialog() == true)
{
result = dialog.FileName;
}
else
{
result = null;
}
我们的应用程序是在.NET 4.0框架上运行的WPF应用程序。 代码在我的机器上以及在每个其他客户的机器上都能正常工作,但它会为这个特定客户抛出此错误。 我尝试对此进行一些研究,但我没有发现可能导致它的任何有用的东西。 文件名似乎完全有效。 有任何想法吗?
看起来这种方法在Windows XP或更高版本的Windows上没有相同的行为。
客户正在运行Windows XP,并且正在使用包含/(“My / File.xlsx”)的文件名打开SaveFileDialog。 这导致ShowDialog()在显示对话框之前抛出上述错误。 但是,错误消息仅包含/(在此示例中为“File.xlsx”)之后的文件名部分。
在Windows 8上,使用包含/的文件名调用ShowDialog是没有问题的。 它只会阻止您在不更改名称的情况下进行保存,因为带有/的名称无效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.