第 1 点是您的解决方案,真的。
您必须保留一个Filename
字符串变量来保存当前文档的文件名。如果您创建一个新文档,Filename
则为null
. 然后,如果单击Save
或Save As...
并且用户没有取消对话框,则将结果存储FileDialog.FileName
在Filename
变量中,然后写入文件内容。
现在,如果用户再次单击Save
,您检查是否Filename
有值,如果有,则不要显示,SaveFileDialog
而只是再次写入文件。
然后,您的代码将如下所示:
private String _filename;
void saveToolStripMenuItem_Click()
{
if (String.IsNullOrEmpty(_filename))
{
if (ShowSaveDialog() != DialogResult.OK)
{
return;
}
}
SaveCurrentFile();
}
void saveAsToolStripMenuItem_Click()
{
if (ShowSaveDialog() != DialogResult.OK)
{
return;
}
SaveCurrentFile();
}
DialogResult ShowSaveDialog()
{
var dialog = new SaveFileDialog();
// set your path, filter, title, whatever
var result = dialog.ShowDialog();
if (result == DialogResult.OK)
{
_filename = result.FileName;
}
return result;
}
void SaveCurrentFile()
{
using (var writer = new StreamWriter(_filename))
{
// write your file
}
}