私はプログラミングの学生で、簡単なプログラムを作成して練習することにしました。これは、名前、生年月日、住所などを含む単純なフォームで、テキスト ファイルに保存されています (もっと簡単な方法があることは知っていますが、すべてを学びたいので、この方法から始めました =) )
その人がすでに保存されている場合は、名前で検索するボタンがあり、そうであれば、フォームにデータを入力することになっています。
保存方法の例を次に示します。
38b7aa1f-0afb-4fe5-a8f6-40fe953eb1ca;Cindy;22/07/2005;111.111.111-11;22.222.222-2;33333-333;Testes;2112;05;Testando;Testadora;SP;cindy@gmail.com;(44)44444-4444;(55)55555-5555;True;True;Rose;26/05/1950;666.666.666-66;77.777.777-7
したがって、名前 (Cindy) は配列のインデックス [1] になります。
問題はこのエラーです: インデックスは配列の範囲外でした この行で: if (linha[1] == txtboxNome.Text)
私はインターネットで検索し、問題を少し理解しましたが、まだ修正方法がわかりません。
誰か助けてくれませんか?フォームを正しく読み込むにはどうすればよいですか?
これは、プログラムを「見る」のに役立つプリントです。レイアウトについて心配する必要はありません。実行時に不透明度が 0 になるものもあります =) http://i.imgur.com/jze16Pz.jpg
よろしくお願いします=)
private void pesquisarNovoBtn_Click(object sender, RoutedEventArgs e)
{
var filePath = @"E:\Programação\WPF ConsultorioDentista\WPF ConsultorioDentista\bin\Debug\Pacientes.txt";
string[] resultado = null;
using (var abrirPacientes = System.IO.File.OpenText(filePath))
{
string lerPacientes = abrirPacientes.ReadLine();
while (lerPacientes != null)
{
var linha = lerPacientes.Split(';');
if (linha[1] == txtboxNome.Text)
{
resultado = linha;
break;
}
lerPacientes = abrirPacientes.ReadLine();
}
if (resultado == null)
{
MessageBox.Show("Paciente não encontrado.");
}
else
{
txtboxNome.Text = resultado[1];
txtboxData.Text = resultado[2];
txtboxCPF.Text = resultado[3];
txtboxRG.Text = resultado[4];
txtboxCEP.Text = resultado[5];
txtboxEndereco.Text = resultado[6];
txtboxNumero.Text = resultado[7];
txtboxCompl.Text = resultado[8];
txtboxBairro.Text = resultado[9];
txtboxCidade.Text = resultado[10];
txtboxUF.Text = resultado[11];
txtboxEmail.Text = resultado[12];
txtboxCel.Text = resultado[13];
txtboxTelRes.Text = resultado[14];
//checkBoxClinico.IsChecked = resultado[15];
//checkBoxOrto.IsChecked = resultado[16];
txtboxNomeResp.Text = resultado[17];
txtboxNascResp.Text = resultado[18];
txtboxCPFResp.Text = resultado[19];
txtboxRGResp.Text = resultado[20];
}
abrirPacientes.Close();
}