Windows窗体datagridview,给IndexOutOfRangeException

时间:2019-01-10 22:08:27

标签: c# datagridview indexoutofboundsexception

我有一个由随机生成的数字组成的datagridview 6x6,我想读取datagrid中的每个单元格并检查有多少个重复项,我认为一个好主意是将每个单元格值放入一个数组并将其排序。排序后,我将检查每个值及其旁边的值,看看它们是否相同以及它们是否相同,我将增加计数器。我的问题是,当我运行此代码时,会在代码上得到System.IndexOutOfRangeException: 'Index was outside the bounds of the array.'我们遍历datagridview的部分,此行“ 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 :(得分:1)

网格底部有一个额外的空白行,必须删除该行,并且程序运行正常