C# windows窗体datagridview,提供IndexOutOfRangeException

C# windows窗体datagridview,提供IndexOutOfRangeException,c#,datagridview,indexoutofboundsexception,C#,Datagridview,Indexoutofboundsexception,我有一个由随机生成的数字组成的datagridview 6x6,我想读取datagrid中的每个单元格,并检查有多少个数字是重复的,我认为一个好主意是将每个单元格的值放入一个数组并对其排序。排序后,我会检查每个值及其旁边的值,看看它们是否相同,如果相同,我会增加计数器。我的问题是,当我运行此代码时,我得到一个System.IndexOutOfRangeException:“索引超出了数组的边界。”在我们迭代datagridview的部分,这一行“numeros[c]=Convert.ToInt1

我有一个由随机生成的数字组成的datagridview 6x6,我想读取datagrid中的每个单元格,并检查有多少个数字是重复的,我认为一个好主意是将每个单元格的值放入一个数组并对其排序。排序后,我会检查每个值及其旁边的值,看看它们是否相同,如果相同,我会增加计数器。我的问题是,当我运行此代码时,我得到一个
System.IndexOutOfRangeException:“索引超出了数组的边界。”
在我们迭代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();
        }
private void按钮2\u单击(对象发送者,事件参数e)
{
int cont=0;
int[]numeros=新int[36];
int c=0;
foreach(dataGridView1.Rows中的DataGridViewRow行)
{
foreach(row.Cells中的DataGridViewCell单元格)
{
numeros[c]=转换为16(单元格值);
C++;
}
}
数组.Sort(numeros);
label12.Text=“”;
对于(int i=0;i<36;i++)
{
label12.Text+=numeros[i].ToString()+“,”;
如果(i==35)
{
打破
}
其他的
{
if(numeros[i]==numeros[i+1])
{
cont++;
}
}
}
label7.Text=cont.ToString();
}

网格底部有一个额外的空行必须删除,程序运行良好

这是否意味着行返回包括标题在内的所有列?看起来您的网格大于6x6。请在Debugger中检查精确的行数和列数您是正确的网格显示为7x7,但我不知道为什么它只有6列umns和6行我刚刚注意到它在网格底部有一个空行,我如何摆脱它?请参阅VS中的网格属性,应该有删除底部空行的选项。它用于让用户附加新行。尝试将网格设置为只读/禁用编辑。