C# 保存文件对话框 单击“取消”将引发异常
本文关键字:异常 取消 保存文件 对话框 单击 | 更新日期: 2023-09-27 17:56:46
我已经研究了解决此问题的可能的不同方法,但尚未找到解决此问题的方法。
一切正常,弹出SaveFileDialog
框,您可以单击保存没有问题,如果单击取消,它会引发异常。
我的代码如下:
private void createNewFile_Click(object sender, RoutedEventArgs e)
{
Microsoft.Win32.SaveFileDialog saveFileDialog1 = new Microsoft.Win32.SaveFileDialog();
saveFileDialog1.FileName = "New Note"; //default file name
saveFileDialog1.DefaultExt = ".txt"; //default file extension
saveFileDialog1.Filter = "Text Files (.txt)|*.txt"; //filter files by extension
saveFileDialog1.ShowDialog(); //bring up the Dialog box
if(saveFileDialog1.FileName != "")
{
using (StreamWriter sw = new StreamWriter(saveFileDialog1.OpenFile()))
{
sw.Write(textResult.Text);
}
}
}
它抛出错误的行是这一行:
using (StreamWriter sw = new StreamWriter(saveFileDialog1.OpenFile()))
它说textResult
的这一行是它从中读取文本以保存到 TXT 文件的textbox
sw.Write(textResult.Text);
它抛出的异常是
"An unhandled exception of type 'System.ArgumentException' occured in mscorlib.dll"
"Additional information: Absolute path information is required"
在尝试使用 StreamWriter 之前,您需要验证用户是否确实单击了"保存"。另外,您的病情:
if(saveFileDialog1.FileName != "")
将始终为 true,因为您将 FileName 属性设置在其上方几行。
而是改为:
var result = saveFileDialog1.ShowDialog();
if(result.HasValue && result.Value)
如果用户单击"保存",它将返回true,如果用户单击"取消",它将返回false,如果用户关闭该框,结果将没有值。
更多信息: https://msdn.microsoft.com/en-us/library/dd491101(v=vs.95).aspx
而不是if(saveFileDialog1.FileName != "")
尝试
if(saveFileDialog1.DialogResult == DialogResult.OK
)
在这种情况下,如果您单击"保存",它将处理到Streamwriter,如果您单击"取消",它将关闭对话框而不执行进一步的操作。