WindowsFormアプリーケーションで、DataGridViewの新規行からDataSourceのレコードを移動すると表題のエラーが発生します。 DataGridViewにCurrencyManagerによるカーソル移動をサポートしたBindingSourceなどのコンポーネントをDataSourceに指定します。BindingSourceのMoveFirstメソッドで新規行から既存行に移動し、再び新規行に移動するとエラーが発生します。新規行から既存行に移動するのに矢印キーを使った場合は該当の現象は起こりません。また、MoveFirstを呼び出す前にFormのValidateメソッドを呼ぶとこのエラーは起こりません。 私はValidateメソッドを呼ばなくてもこのようなエラーが起こらないことを希望します。 現状ですとBindingSourceを操作するプログラムは、BindingSourceがDataGridViewにバインディングされているかどうかを意識しなければならず、結合度が高くなってしまうからです。 NetFrameworkのソースをステッピングすると、新規行から既存行に移動するときに、矢印キーを使った場合にはCancelEdit、CancelNewが発生しています。それに対してMoveFirstメソッドを呼び出した場合はEndEdit、EndNewが発生し、次に下矢印キーで移動したときにCancelEdit、CancelNewが発生します。このようにDataGridViewの内部状態が矛盾します。 このようなことが起こらないようにするためには、CurrencyManagerやBindingSourceを拡張してPosition変更前に発生するイベント"PositionChanging"や"CurrentChanging"を新たに設け、DataGridViewはこのイベントを捕捉してCancelEdit、CancelNewを発生させるのが良いと思います。