我在CellEndEdit中使用此代码:
if ((dataGridView1.Columns[dataGridView1.CurrentCell.ColumnIndex].Name == "Column1"))
{
dataGridView1.CurrentCell = dataGridView1[1, 0];
}
如果我处于编辑模式(不在选择模式下)并且我点击另一个单元格,我会收到错误:
InvalidOperationExpection未处理
请参阅下图,了解我正在解释的内容:
我尝试了这样的事情没有结果:
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
dataGridView1.CellEndEdit += new DataGridViewCellEventHandler(dataGridView1_CellEndEdit);
}
答案 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
在创建控件的基础句柄的线程上异步执行指定的委托。