C#保存文件对话框单击取消会引发异常
我已经研究过这个问题可能的不同解决方法,但还没有找到解决这个问题的方法 一切正常,弹出C#保存文件对话框单击取消会引发异常,c#,C#,我已经研究过这个问题可能的不同解决方法,但还没有找到解决这个问题的方法 一切正常,弹出SaveFileDialog框,您可以单击“保存无问题”,如果单击“取消”,则会引发异常 我的代码如下: private void createNewFile_Click(object sender, RoutedEventArgs e) { Microsoft.Win32.SaveFileDialog saveFileDialog1 = new Microsoft.Win32.SaveFileDial
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
的这一行是textbox
它从中读取要保存到TXT文件的文本
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
改为:
var result = saveFileDialog1.ShowDialog();
if(result.HasValue && result.Value)
如果用户单击“保存”,则返回true;如果用户单击“取消”,则返回false;如果用户关闭框,则结果将没有值
更多信息:在尝试使用StreamWriter之前,您需要验证用户是否确实单击了“保存”。 此外,您的情况:
if(saveFileDialog1.FileName != "")
当您仅在文件名属性上方几行设置文件名属性时,将始终为true
改为:
var result = saveFileDialog1.ShowDialog();
if(result.HasValue && result.Value)
如果用户单击“保存”,则返回true;如果用户单击“取消”,则返回false;如果用户关闭框,则结果将没有值
更多信息:而不是if(saveFileDialog1.FileName!=“”)
试一试
if(saveFileDialog1.DialogResult==DialogResult.OK
)
在这种情况下,如果单击“保存”,它将进入streamwriter;如果单击“取消”,它将关闭对话框,而无需进一步操作 而不是if(saveFileDialog1.FileName!=“”)
试一试
if(saveFileDialog1.DialogResult==DialogResult.OK
)
在这种情况下,如果单击“保存”,它将进入streamwriter;如果单击“取消”,它将关闭对话框,而无需进一步操作 异常是什么?测试
ShowDialog
结果而不是文件名:if(saveFileDialog1.ShowDialog()==true){使用(…)…}
异常是什么?测试ShowDialog
结果而不是文件名:if(saveFileDialog1.ShowDialog()==true){使用(…)…}
这不会编译,因为结果是bool?
,而不是bool
。当用户通过系统菜单关闭对话框时,结果是null
。这是否意味着我需要删除saveFileDialog1.ShowDialog();从上面的一位开始?@LukeLitherland请查看我的最新编辑,将ShowDialog的当前行替换为:var result=saveFileDialog1.ShowDialog();这不会编译,因为结果是bool?
,而不是bool
。当用户通过系统菜单关闭对话框时,结果是null
。这是否意味着我需要删除saveFileDialog1.ShowDialog();从上面的一位开始?@LukeLitherland请查看我的最新编辑,将ShowDialog的当前行替换为:var result=saveFileDialog1.ShowDialog();