C# 保存文件对话框 单击“取消”将引发异常



我已经研究了解决此问题的可能的不同方法,但尚未找到解决此问题的方法。

一切正常,弹出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,如果您单击"取消",它将关闭对话框而不执行进一步的操作。

相关内容

最新更新