保存没有对话框的文件

问题描述:

我已到处寻找,找不到我正在寻找的东西。我要的是代号为saveToolStripMenuItem_Click事件处理程序的“保存”菜单上(而不是“另存为...”),并有我的应用程序检查,看是否:保存没有对话框的文件

  1. 目前文件已保存,因此已经有一个文件名。

  2. 当前文件自打开以来已被修改。

  3. 覆盖(或追加,根据需要)现有的文件,而不会弹出“另存为”对话框。

  4. 如果该文件尚不存在,则显示“另存为...”菜单。

我的“另存为...”菜单已正常工作。我发现的一切都告诉我如何创建一个“另存为...”对话框,我已经知道了。我下载的每个示例程序都没有这个功能。

任何帮助,将不胜感激。

+0

任何代码?你能告诉我们你做过什么/尝试过吗? – 2012-07-11 09:04:31

点1实现为点中提到的要求是你的解决方案,真的。

您必须保留一个Filename字符串变量,该变量包含当前文档的文件名。如果您创建一个新文档,Filenamenull。然后,如果您单击SaveSave 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