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