保留文本框中的文本

时间:2013-10-08 09:28:59

标签: c# windows forms

我有这些文本框,用户输入数据然后按下按钮来处理数据。现在用户输入的数据很多,并且为了给用户一些松弛,我希望无论何时按下按钮,应用程序都会保存数据,因此当您关闭应用程序并再次启动它时,文本框将被填充最后输入的数据。

我正在考虑使用.txt文件来保存数据。只有我发现了一些困难。其中一个问题是,每当我尝试运行我的应用程序时,我都会从微软.NET Framework中获取一个消息框。消息框说索引超出了数组的范围。即使我认为我的代码没有超出我的数组的范围。

以下是我使用的代码:

首先,我声明了一个数组,并用包含文本框内容的变量填充它:

string[]settings = new string[5];
settings[0] = openKey;
settings[1] = secretKey;
settings[2] = statusRequestPath;
settings[3] = statusRequestAPI;
settings[4] = setSeconds.ToString();

然后我使用以下代码将数据写入文本文件。

using (StreamWriter writeFile = new StreamWriter(@"C:\Audio Silence Detector\AudioSilenceDetector.txt"))
{
    foreach (string line in settings)
    {
        writeFile.WriteLine(line);
    }
}

要将.txt文件的文本放回应用程序中,我将其放在formload中:

string[] lines = System.IO.File.ReadAllLines(@"C:\Audio Silence Detector\AudioSilenceDetector.txt");

tbOpenKey.Text = lines[0];
tbSecretKey.Text = lines[1];
tbStatusRequestPath.Text = lines[2];
tbStatusRequestAPI.Text = lines[3];
tbSeconds.Text = lines[4];

我将我的代码更改为此,似乎解决了我遇到的问题:

            if (lines.LongLength == 5)
        {
            tbOpenKey.Text = lines[0];
            tbSecretKey.Text = lines[1];
            tbStatusRequestPath.Text = lines[2];
            tbStatusRequestAPI.Text = lines[3];
            tbSeconds.Text = lines[4];
        }

1 个答案:

答案 0 :(得分:3)

问题在于文件加载。

string[] lines = System.IO.File.ReadAllLines(@"C:\Audio Silence Detector\AudioSilenceDetector.txt");

您无法确定lines现在包含5个elemet。你可能应该检查一下。

if(lines.Length == 5)
{
    tbOpenKey.Text = lines[0];
    tbSecretKey.Text = lines[1];
    tbStatusRequestPath.Text = lines[2];
    tbStatusRequestAPI.Text = lines[3];
    tbSeconds.Text = lines[4];
}
else
{
    MessageBox.Show("Input Data is Wrong");
}