保存对话框消息和空路径名称

时间:2012-09-20 02:47:53

标签: c#

我目前在C#中使用Open filewrite file个函数。我遇到两个问题:当用户正在保存文件的过程中,如果他/她退出保存对话框并且没有保存任何内容,则会出现错误(请参阅下面的图片以获取说明)。我的程序如何避免这种情况而不是崩溃?文件保存后是否有显示消息的信息?

enter image description here

 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();

            }

3 个答案:

答案 0 :(得分:1)

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

您可以在if声明中查看此内容。

答案 1 :(得分:1)

使用ShowDialog来电的返回值来确定用户选择的内容。

以下代码仅在用户在对话框中选择“确定”时保存:

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();
}

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

答案 2 :(得分: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或空格 - 除非您取消,否则对话框会阻止它,但为了清楚起见,我将其包括在内。