在表单关闭事件上写入文本文件

本文关键字:文本 文件 事件 表单 | 更新日期: 2023-09-27 18:34:26

我正在尝试将一些字符串写入formclose事件的文本文件中。 问题是流编写器什么都不写,它只是写一张白纸。 我有 2 个不同的文本文件,第一个将记录所有图形数据,第二个文本文件将记录与我的应用程序相关的几个首选项。 下面显示了关闭事件和单独的主力方法的代码:

  private void Form1_FormClosing(object sender, FormClosingEventArgs e)
    {

        if (e.CloseReason.Equals(CloseReason.WindowsShutDown) || (e.CloseReason.Equals(CloseReason.UserClosing))) 
        {
            if (MessageBox.Show("You are closing this application.'n'nAre you sure you wish to exit ?", "Warning: Not Submitted", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Stop) == DialogResult.Yes)
            {
                writeContents("Interrupted");
                return;
            }
            else
                e.Cancel = true; 
        } 

    }
    private void writeContents(string status)
    {
        //---writes the graph data-----
        TextWriter twBackupData = new StreamWriter("C://springTestBackupData.txt");
        twBackupData.WriteLine("--Cycle#-- --TorqueLower-- --TorqueUpper--");
        //writes the table of values in there, assume x and y are the same size arrays
        for(int i = 0; i < x.Count; i++)
        {               
            twBackupData.WriteLine(x[i] + "   " + y_lower[i] + "   " + y_upper[i]);
        }

        //---writes some of the preferences------
        TextWriter twBackupDataInfo = new StreamWriter("C://springTestBackupInfo.txt");
        twBackupDataInfo.WriteLine(status);
        twBackupDataInfo.WriteLine(cycleCount.ToString());
        twBackupDataInfo.WriteLine(section.ToString());
        twBackupDataInfo.WriteLine(revsPerCycle.ToString());
        twBackupDataInfo.WriteLine(preturns.ToString());
        twBackupDataInfo.WriteLine(direction.ToString());
    }

如果您可以提供建议或帮助我找出为什么它写空白,我将不胜感激。 谢谢!

在表单关闭事件上写入文本文件

您需要

使用 using 语句关闭StreamWriter

使用起来要容易得多:

var linesToWrite = new list<string>();
linesToWrite.Add(status);
linesToWrite.Add(cycleCount.ToString());
...
File.WriteAllLines("C://springTestBackupData.txt", linesToWrite);

你需要关闭/释放编写器才能写入,否则它永远不会刷新其流(即将数据写入文件)

使用 'using' 语句会在对象超出范围时自动释放对象,因此:

using(TextWriter twBackupData = new StreamWriter("C://springTestBackupData.txt"))
{
     // Do your stuff here - write to the tw ---

    twBackupData.WriteLine("--Cycle#-- --TorqueLower-- --TorqueUpper--");   
    //writes the table of values in there, assume x and y are the same size arrays   
    for(int i = 0; i < x.Count; i++)   
    {                  
        twBackupData.WriteLine(x[i] + "   " + y_lower[i] + "   " + y_upper[i]);   
    }   
}

将确保您的文件被写入

更多信息在这里:

http://msdn.microsoft.com/en-us/library/yh598w02.aspx

你需要

在你的StreamWriters上做.Close();