окна формируют datagridview, давая IndexOutOfRangeException - PullRequest
0 голосов
/ 11 января 2019

У меня есть сетка данных 6x6, созданная из случайно сгенерированных чисел, и я хочу прочитать каждую ячейку в сетке данных и проверить, сколько чисел являются дубликатами. Я подумал, что хорошей идеей будет получить значение каждой ячейки в массив и отсортировать его , как только он был отсортирован, я проверял бы все значения и одно рядом с ним и смотрел бы, были ли они одинаковыми, и если бы они были, я увеличил бы счетчик. Моя проблема в том, что когда я запускаю этот код, я получаю System.IndexOutOfRangeException: 'Index was outside the bounds of the array.' в части, где мы перебираем сетку данных, эту строку "numeros[c] = Convert.ToInt16(cell.Value);". После некоторого тестирования я попытался показать все значения ячеек, и они выглядели как 0.

private void button2_Click(object sender, EventArgs e)
        {
            int cont = 0;
            int[] numeros = new int[36];
            int c = 0;
            foreach (DataGridViewRow row in dataGridView1.Rows)
            {
                foreach (DataGridViewCell cell in row.Cells)
                {
                    numeros[c] = Convert.ToInt16(cell.Value);
                    c++;
                }
            }
            Array.Sort(numeros);
            label12.Text = "";
            for(int i = 0; i < 36; i++)
            {
                label12.Text += numeros[i].ToString() + ", ";
                if (i == 35)
                {
                    break;
                }
                else
                {
                    if (numeros[i] == numeros[i + 1])
                    {
                        cont++;
                    }
                }

            }
            label7.Text = cont.ToString();
        }

1 Ответ

0 голосов
/ 11 января 2019

сетка имела дополнительную пустую строку внизу, которую пришлось удалить, и программа работала нормально

...