사용자가 데이터를 입력 한 다음 단추를 눌러 데이터를 처리하는 텍스트 상자가 있습니다. 이제 사용자가 입력 한 데이터가 많아서 사용자에게 약간의 여유를주기 위해 단추를 누를 때마다 응용 프로그램이 데이터를 저장하므로 응용 프로그램을 닫고 다시 시작하면 텍스트 상자가 채워집니다 마지막으로 입력 한 데이터로텍스트 상자에 텍스트 저장 유지
.txt 파일을 사용하여 데이터를 저장하려고했습니다. 오직 나는 이것으로 몇 가지 어려움을 발견했다. 문제 중 하나는 응용 프로그램을 실행하려고 할 때마다 Microsoft .NET Framework에서 messagebox를 계속 가져 오는 것입니다. messagebox는 Index가 배열의 범위 밖에 있다고 표시합니다. 비록 내 코드가 내 배열의 경계를 초과하지 않는다고 생각한다.
먼저 내가 배열을 선언하고 텍스트 상자의 내용을 포함하는 변수를 작성 : 다음
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);
}
}
그리고 나는 formload에 넣고 한 응용 프로그램에서 다시 .txt 파일의 텍스트를 넣어 :
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'은 null 일 수 없습니다. 배열 인스턴스가되거나 예외가 발생합니다. –