没有对话框保存文件

时间:2012-07-11 09:01:50

标签: c#

我到处寻找,找不到我要找的东西。我想要的是“保存”菜单上的saveToolStripMenuItem_Click事件处理程序的代码(不是“另存为...”)并让我的应用程序检查是否:

  1. 当前文件已保存,因此已有文件名。

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

  3. 在不启动“另存为”对话框的情况下覆盖(或根据需要附加)现有文件。

  4. 如果文件尚不存在,请打开“另存为...”菜单。

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

    任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:1)

第1点是你的解决方案,真的。

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