分配currentcell datagridview时的异常

时间:2012-12-13 10:37:00

标签: c# winforms data-binding datagridview

我有一个非常奇怪的例外。我有一个datagridview绑定到一些数据。当数据源为空时,我向其添加一些数据,更新datagridview并尝试设置我添加到editmode的行。这是代码:

foreach (DataGridViewRow row in dataGridViewActionTemplates.Rows)
{
    if (((GridActionTemplate)row.DataBoundItem).ID == actTemplate.Id)
    {
        dataGridViewActionTemplates.CurrentCell = row.Cells[dataGridViewActionTemplates.Columns.GetFirstColumn(DataGridViewElementStates.Visible).Index];
        dataGridViewActionTemplates.BeginEdit(false);
        break;
    }
 }

当我尝试执行赋值时,我得到一个'IndexOutOfRange'异常,它说'索引-1没有值。'这很奇怪,因为赋值右侧的索引大于零。

我非常感谢你的帮助

1 个答案:

答案 0 :(得分:0)

我记得有些类似的怪异,我最终发现它与Windows 7中选定的Windows主题有关。当时我的代码在Aero上正常工作,没有例外但在Win中启用经典主题时表现得与你的相似7或代码在Windows 2003上运行时。它与您的情况完全不同,所以我不知道它是否是同一个问题,但这可能是一个可能的问题看看。具体问题与列和行标题的索引有关,奇怪的是在2个不同的主题中没有返回相同的值。也就是说,可能是您在不知不觉中尝试修改行标题字段而不是第一个实际数据字段。