Hitech123 Ответов: 1

C# - как получить текстовые значения, разделенные запятыми, в текстовые поля?


Я пытаюсь получить несколько значений из текстового файла, разделенного запятыми, и скопировать их в общей сложности в 12 текстовых полей (например: значение " 1 "переходит в textBox1, значение" 2 " переходит в textBox2 и так далее...)

Я использую Windows Forms и получаю сообщение об ошибке ниже:

System.IndexOutOfRangeException: 'Index was outside the bounds of the array.'


Значения из моих текстовых файлов таковы:
1,2,3,4,5,6,
7,8,9,10,11,12,


Ниже приведено то, что я пробовал до сих пор:

namespace WindowsFormsApp18
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }


        public class Cliente
        {
            public string DUTA1A { get; set; }
            public string DUTA1B { get; set; }
            public string DUTA1C { get; set; }
            public string DUTA1D { get; set; }
            public string DUTA1E { get; set; }
            public string DUTA1F { get; set; }
            public string DUTA2A { get; set; }
            public string DUTA2B { get; set; }
            public string DUTA2C { get; set; }
            public string DUTA2D { get; set; }
            public string DUTA2E { get; set; }
            public string DUTA2F { get; set; }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            System.IO.StreamReader reader = new System.IO.StreamReader(@"C:\\DUTA\YourFile.txt");
            string line;
            while ((line = reader.ReadLine()) != null)
            {
                string[] dados = line.Split(',');
                int codigo = int.Parse(dados[0]);
                string DUTA1A = dados[0];
                string DUTA1B = dados[1];
                string DUTA1C = dados[2];
                string DUTA1D = dados[3];
                string DUTA1E = dados[4];
                string DUTA1F = dados[5];
                string DUTA2A = dados[6];
                string DUTA2B = dados[7];
                string DUTA2C = dados[8];
                string DUTA2D = dados[9];
                string DUTA2E = dados[10];
                string DUTA2F = dados[11];

    
                textBox1.Text = DUTA1A;
                textBox2.Text = DUTA1B;
                textBox3.Text = DUTA1C;
                textBox4.Text = DUTA1D;
                textBox5.Text = DUTA1E;
                textBox6.Text = DUTA1F;
                textBox7.Text = DUTA2A;
                textBox8.Text = DUTA2B;
                textBox9.Text = DUTA2C;
                textBox10.Text = DUTA2D;
                textBox11.Text = DUTA2E;
                textBox12.Text = DUTA2F;
            }
        }
    }
}


Есть предложения?

Что я уже пробовал:

При использовании 6 значений ошибок нет. Попробовал изменить и индексы.

1 Ответов

Рейтинг:
2

BillWoodruff

Цитата:
1,2,3,4,5,6,
7,8,9,10,11,12,
Похоже, в ваших данных есть две линии: таким образом, ваш reader.ReadLine while петля становится дважды звонил. Каждый раз, когда он вызывается, он ожидает строковый массив с 12 элементами; и он рухнет, если будет меньше 12 элементов.

Итак, почему вы используете a while петля ?

Исправьте данные ... удалите разрыв строки ... или используйте File.ReadAllText.

Кроме того, используйте необязательный параметр StringSplitOptions.RemoveEmptyEntries параметр со Стрингом.Расщеплять.