C# DataGridViewRow错误的单元格索引

C# DataGridViewRow错误的单元格索引,c#,datagridviewrow,C#,Datagridviewrow,我在尝试通过DataGridViewRow获取一些值时遇到问题。 问题是我的单元格索引为7,当我尝试使用以下代码从单元格获取数据时: foreach (DataGridViewRow r in this.mydatagrid.Rows) { if (Convert.ToBoolean(r.Cells[0].Value) == true) { DataGridViewComboBoxCell cc =

我在尝试通过DataGridViewRow获取一些值时遇到问题。 问题是我的单元格索引为7,当我尝试使用以下代码从单元格获取数据时:

 foreach (DataGridViewRow r in this.mydatagrid.Rows)
        {
            if (Convert.ToBoolean(r.Cells[0].Value) == true)
            {
                DataGridViewComboBoxCell cc = (DataGridViewComboBoxCell)r.Cells[7];
                cc.Value = toolStripComboBox1.SelectedItem.ToString();
                edit_subject(Convert.ToInt32(r.Cells[1].Value), r.Cells[7].Value.ToString());
            }
出现异常错误,表示单元格[7]超出索引。 所以我试着把单元格索引从7改为5,结果成功了 有时,有时不


请给我解释一下,因为这真的很奇怪。

好的,我找到了一个解决方案,这个问题是因为我的SQL语法(Datagrid数据源)与datagridview列的顺序不同, 我没有得到它,因为datagrid自动填充已被禁用。 我已经为每一列手动设置了DataPropertyName


无论如何,谢谢您的回复。

从0开始计数。所以索引7是第8个单元格。您的数据网格中显然没有8个单元格。如果您在
edit_subject
行上设置一个断点,并查看
r.cells[1]的值,这会有所帮助。这将帮助您了解单元格的顺序。正如@phpmeh所说,索引7处可能没有单元格,如果行中只有7个值,那么最高的单元格索引将是6。向我们显示控件的标记,然后我们将查看是否实际有7个值cells@phpmeh我尝试了很多方法来调试,当然是从0开始的7个单元格。我的datagrid包含8个单元格,7个是textboxcell,最后一个是comboboxcell。当我说将索引改为5是有效的,这意味着单元格索引有问题,因为comboboxcell的正确索引是7。但不知怎么的,它变成了5。注意:我在同一个程序中使用了相同的单元格,索引正确,但代码不同,工作正常。我检查了值,无论何时工作,我都得到了正确的值,但无论何时没有,我都从错误的单元格中得到了错误的值。