3

我目前在 C# 中工作Open file和工作。write file我遇到了两个问题:当用户正在保存文件时,如果他/她退出保存对话框并且没有保存任何内容,我会收到错误消息(请看下图的描述)。我的程序如何避免这种情况而不崩溃?文件保存后是否显示消息?

在此处输入图像描述

 private void button2_Click(object sender, EventArgs e)
            {
                SaveFileDialog saveReport = new SaveFileDialog();
                saveReport.Filter = "Text Files | *.txt";
                saveReport.ShowDialog();

                StreamWriter writeFile = new StreamWriter(saveReport.FileName);
                writeFile.Write(textBox1.Text);
                writeFile.Close();

            }
4

3 回答 3

1

如果用户点击取消,ShowDialog()将返回DialogResult.Cancel.

if您可以在声明中检查这一点。

于 2012-09-20T02:49:34.930 回答
1

使用ShowDialog调用的返回值来确定用户选择了什么。

只有当用户在对话框中选择了 OK 时,下面的代码才会保存:

SaveFileDialog saveReport = new SaveFileDialog();
saveReport.Filter = "Text Files | *.txt";
if (saveReport.ShowDialog() == DialogResult.OK) {
    StreamWriter writeFile = new StreamWriter(saveReport.FileName);
    writeFile.Write(textBox1.Text);
    writeFile.Close();
}

原始代码的问题在于,即使用户没有通过对话框指定文件名,您也试图保存。

于 2012-09-20T02:51:53.153 回答
1

你可以这样做:

var saveReport = new SaveFileDialog();
saveReport.Filter = "Text Files | *.txt";
var result = saveReport.ShowDialog();

if(result == DialogResult.Cancel || string.IsNullOrWhiteSpace(saveReport.FileName))
    return;

using(var writer = new StreamWriter(saveReport.FileName))
{
    writer.Write(textBox1.Text);
    writer.Close();
}

MessageBox.ShowDialog("File Saved!");

原则上 FileName 永远不会是null或空格——除非您取消,否则对话框会阻止它,但为了清楚起见,我将其包括在内。

于 2012-09-20T02:55:05.283 回答