当我在其他单元格中单击时,CellEndEdit代码出错

时间:2016-12-14 11:01:46

标签: c# winforms datagridview

我在CellEndEdit中使用此代码:

if ((dataGridView1.Columns[dataGridView1.CurrentCell.ColumnIndex].Name == "Column1"))
{
    dataGridView1.CurrentCell = dataGridView1[1, 0];  
}

如果我处于编辑模式(不在选择模式下)并且我点击另一个单元格,我会收到错误:

  

InvalidOperationExpection未处理

请参阅下图,了解我正在解释的内容:

DatagridviewSample

我尝试了这样的事情没有结果:

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
    dataGridView1.CellEndEdit += new DataGridViewCellEventHandler(dataGridView1_CellEndEdit);
}

1 个答案:

答案 0 :(得分:0)

详情错误

  

操作无效,因为它导致对SetCurrentCellAddressCore函数的可重入调用。

所以您可以使用BeginInvoke这样解决此问题。

   private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
    {
        if ((dataGridView1.Columns[dataGridView1.CurrentCell.ColumnIndex].Name == "Column1"))
        {
            this.BeginInvoke(new MethodInvoker(() =>
            {
                dataGridView1.CurrentCell = dataGridView1[1, 0];
            }));
        }
    }

Control.BeginInvoke方法 - 在这里找到doc

  

在创建控件的基础句柄的线程上异步执行指定的委托。