取消保存对话框时的SaveFileDialog错误

Posted

技术标签:

【中文标题】取消保存对话框时的SaveFileDialog错误【英文标题】:SaveFileDialog error when cancelling the save dialog box 【发布时间】:2016-05-09 20:08:17 【问题描述】:

我有一个保存文本文件的按钮,但是如果用户在保存对话框中选择取消,我会收到以下错误消息:

在 mscorlib.dll 中发生了“system.argumentexception”类型的未处理异常

补充信息:空路径名不合法。

Private sub cmdSave_Click (sender As object, e As EventArgs) Handles cmdSave.Click
    If rtfTextEditor.Text.Length > 0 then
      SaveFileDialog1.ShowDialog()
      System.IO.File.WriteAllText(SaveFileDialog1.Filename, rtfTextEditor.Text)
    End If
End Sub

【问题讨论】:

ShowDialog() 是一个返回结果的方法。您没有测试用户是否取消 【参考方案1】:

当对话框被取消时,我假设SaveFileDialog1.FilenameNothing

你应该检查对话的结果:

If SaveFileDialog1.ShowDialog = DialogResult.OK Then
    System.IO.File.WriteAllText(SaveFileDialog1.Filename, rtfTextEditor.Text)
End If

【讨论】:

【参考方案2】:

如果在尝试保存文件之前使用ShowDialog 命令,您无需等待结果。

SaveFileDialog1.Filename 的内容将为 null,这可能是错误的根源。您需要检查用户是否点击“保存”:

If SaveFileDialog1.ShowDialog() == true then
    System.IO.File.WriteAllText(SaveFileDialog1.Filename, rtfTextEditor.Text)
End If

【讨论】:

以上是关于取消保存对话框时的SaveFileDialog错误的主要内容,如果未能解决你的问题,请参考以下文章

Silverlight 的 SaveFileDialog 给出错误“对话框必须由用户启动”

Silverlight SaveFileDialog.SelectedFile?

在 Silverlight SaveFileDialog 中打开文件而不是保存文件

在 C# 中使用 SaveFileDialog 保存为特定文件格式

C# OpenFileDialog和SaveFileDialog:打开文件与保存文件

在 multidotExtension 上意外添加了 SaveFileDialog 扩展