我有这些文本框,用户输入数据然后按下按钮来处理数据。现在用户输入的数据很多,并且为了给用户一些松弛,我希望无论何时按下按钮,应用程序都会保存数据,因此当您关闭应用程序并再次启动它时,文本框将被填充最后输入的数据。
我正在考虑使用.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];
}
答案 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");
}