読者です 読者をやめる 読者になる 読者になる

DataGridView での SetCurrentCellAddressCore 関数への再入呼び出しエラー

DataGridView クラスCellEnter イベント で、選択されたセルを別のセルに変更するために、

private void dataGridView1_CellEnter(Object sender, DataGridViewCellEventArgs e)
{
    dataGridView1[columnIndex, rowIndex].Selected = true;
}

を実行したところ、

SetCurrentCellAdressCore 関数への再入呼び出しを生じるため、この操作は有効ではありません。

というエラーが発生した。

f:id:tt195361:20150511155617p:plain

イベントハンドラで直接セルを選択せず、BeginInvoke などを使ってイベントハンドラの外で設定すればこのエラーは発生しない。

private void dataGridView1_CellEnter(Object sender, DataGridViewCellEventArgs e)
{
    Action a = () => dataGridView1[columnIndex, rowIndex].Selected = true;
    BeginInvoke(a);
}