保存没有对话框的文件
问题描述:
我已到处寻找,找不到我正在寻找的东西。我要的是代号为saveToolStripMenuItem_Click事件处理程序的“保存”菜单上(而不是“另存为...”),并有我的应用程序检查,看是否:保存没有对话框的文件
目前文件已保存,因此已经有一个文件名。
当前文件自打开以来已被修改。
覆盖(或追加,根据需要)现有的文件,而不会弹出“另存为”对话框。
如果该文件尚不存在,则显示“另存为...”菜单。
我的“另存为...”菜单已正常工作。我发现的一切都告诉我如何创建一个“另存为...”对话框,我已经知道了。我下载的每个示例程序都没有这个功能。
任何帮助,将不胜感激。
答
点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
}
}
答
您可以通过编写自定义使用
System.IO.FileOptions和有System.IO.File方法
http://msdn.microsoft.com/en-us/library/system.io.file_methods
任何代码?你能告诉我们你做过什么/尝试过吗? – 2012-07-11 09:04:31