У меня есть эти текстовые поля, в которых пользователь вводит данные, а затем нажимает кнопку для обработки данных. Теперь данные, введенные пользователем, очень много и дают пользователю некоторую слабину, которую я хочу сделать возможной, когда вы нажимаете кнопку, приложение сохраняет данные, поэтому, когда вы закрываете приложение и запускаете его обратно, текстовые поля заполняются с последними введенными данными.Сохранять текст в текстовых ячейках
Я думал об использовании .txt-файла для сохранения данных. Только я нашел некоторые трудности с этим. Одна из проблем заключается в том, что я все время получаю сообщение от Microsoft .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];
}
Какая линия получает исключение IndexOutOfBounds? Я подозреваю, что вы открыли приложение в первый раз, и нет текстового файла для чтения или его пустого файла. –
как @NicolasTyler, сделайте проверку перед заполнением текстовых полей 'if (lines! = Null && lines.Length == 5)'. – Sinatr
@Sinatr 'lines' не может быть нулевым. Будет либо запущен экземпляр массива, либо исключение. –