1

現時点ではthis.EndInvoke(this.BeginInvoke(new MethodInvoker( this.resortRows )));、空のセルをチェックして DGV を並べ替えるメソッドを呼び出すために使用しています。しかし、CellEndEdit からこれを呼び出しています。

Enter キーまたは Tab キーを押してイベントが呼び出された場合はすべて正常に動作しますが、EditMode のままで別のセルをクリックすると、並べ替えコマンドの行でエラーが発生します。

Operation is not valid because it results in a reentrant call to the SetCurrentCellAddressCore function.

これは並べ替えコマンドです。

this.dataGridView1.Sort(this.dataGridView1.Columns[2], ListSortDirection.Ascending);

私はこのようなイベントを処理しようとしましたMouseClick:

private void dataGridView1_MouseClick(object sender, MouseEventArgs e)
{
  this.dataGridView1.EndEdit();
}

しかし、これは灰色の領域の DGV 内をクリックした場合にのみ機能します (セルやヘッダーではありません)。どうすればこれを修正できますか?

4

1 に答える 1

1

私は実際にあなたのコードを試しましたが、問題はEndInvokeです。
削除するだけで(つまり、使用のみBeginInvoke)、正常に機能します。

編集 :

BeginInvoke呼び出されたメソッドなしでの使用は、ハンドラーが終了したEndInvoke直後に実行されます。CellEndEdit

並べ替えのたびにコードを呼び出す必要がある場合は、呼び出されたメソッドの最後にコードを配置するだけです。

于 2012-08-03T08:04:41.813 に答える