-1

我是一名编程学生,并决定制作一个简单的程序来练习。这是一个简单的表格,有姓名、出生日期、地址等,它被保存在一个文本文件中(我知道有更简单的方法,但我想学习所有这些方法并从这个开始=))

我有一个按钮可以按名称搜索此人是否已保存,如果是,则应该用数据填写表格。

这是如何保存的示例:

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] 中。

问题是这个错误:index was outside the bounds of the array 在这一行: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();

        }
4

1 回答 1

1

这是您需要“逐步执行”应用程序的地方。在 If 语句上设置断点 (F9):

  if (linha[1] == txtboxNome.Text)
                {
                    resultado = linha;
                    break;
                }

然后将鼠标悬停在 linha 数组中查看包含的值。

很可能您在文件的第一行中有一个标题,并且它没有拆分。

于 2013-04-22T15:05:19.727 回答