我到处寻找,找不到我要找的东西。我想要的是“保存”菜单上的saveToolStripMenuItem_Click事件处理程序的代码(不是“另存为...”)并让我的应用程序检查是否:
当前文件已保存,因此已有文件名。
自打开以来,当前文件已被修改。
在不启动“另存为”对话框的情况下覆盖(或根据需要附加)现有文件。
如果文件尚不存在,请打开“另存为...”菜单。
我的“另存为...”菜单已正常运行。我发现的一切都告诉我如何创建一个“另存为...”对话框,我已经知道了。我下载的每个示例程序都没有此功能。
任何帮助都将不胜感激。
答案 0 :(得分:1)
第1点是你的解决方案,真的。
您必须保留一个Filename
字符串变量,该变量包含当前文档的文件名。如果您创建新文档,则Filename
为null
。然后,如果您单击Save
或Save As...
并且用户未取消该对话框,则会将结果FileDialog.FileName
存储在Filename
变量中,然后写入文件内容。< / p>
现在,如果用户再次点击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
}
}
答案 1 :(得分:0)
您可以通过使用
编写自定义来实现作为点提到的要求System.IO.FileOptions和System.IO.File方法
http://msdn.microsoft.com/en-us/library/system.io.file_methods