我有一个由随机生成的数字组成的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();
}
答案 0 :(得分:1)
网格底部有一个额外的空白行,必须删除该行,并且程序运行正常