私はこの DataGridView コントロールにかなり不満を感じています。私が本当にやりたいことは、グリッドが最初にデフォルトの方法でソートされていることを確認することです (必要に応じて、ユーザーは別の方法でソートすることもできます)。
DataSource を割り当ててから、Sort メソッドを呼び出してみました。これは機能する場合もありますが、InvalidOperationException が発生する場合もあります。デバッグすると、グリッドが機能しないときに行や列がないことが示されているようです。この動作の断続的な性質から、競合が発生していると推測できます。そのため、データ ソースを割り当てるときにグリッドが同期的にバインドされず、バックグラウンドでバインドされる可能性があります。
そこで、MSDN のドキュメントを確認すると、DataBindingCompleted というイベントがあることがわかりました。ちょうどよさそうなので、ハンドラーをアタッチします。イベントはグリッド自体で宣言されているため、コントロール全体のすべてのデータ バインディングが終了したことを意味していると思われます。それでも、実際に新しいデータをグリッドにバインドするたびに、何度も発生します (わかりませんが、セルごとに 1 回推測しています)。
私はこれで生きていけると思います。グリッドはおそらく「col1 asc」でソートするように求められた場合、まったく何もしないほどスマートであり、すでにそのようにソートされているため、オーバーヘッドはおそらくそれほど大きくありません。(そうでない場合は、実際に何かを変更する場合を除き、いつでも自分でそのテストを行い、並べ替えを呼び出さないようにすることができます。)それでも、データバインディングがいつ本当に完了するかを知る方法がないかどうかを知りたいです。