MSフォーラム(MSによる)で報告されているように、例外はDataGridViewによってスローされます。私の知る限り、これは、コントロールが初期化されたときにマウスカーソルがdatagridviewclientrectangle内にあるときに発生します。MSは、列のサイズ変更イベントとセル入力イベントが同時に発生し、例外がスローされることを(「設計により」)許可していることを通知します。提案された回避策は私の問題を解決しませんでした。
MSはこの問題の修正に関心がないようであるため、私にとっては2つの解決策が機能することがわかりました。
- 新しいフォームが「安全な」位置で開き、マウスカーソルの邪魔にならないことを確認してください
- フォームのコンストラクターの実行中に、マウスカーソルを保存位置に移動します
'System.Windows.Forms.Cursor.Position'を使用して、現在のマウス画面の位置を取得および設定できます。
ユーザー入力なしでマウスカーソルを移動することは必ずしも評価されませんが、アプリケーションで一貫して実行する場合、それは私にとって最も受け入れられるオプションです。
これは、DataGridViewを含むフォームのコンストラクターで使用する傾向があるコードです(InitializeComponentメソッドの後)。
Cursor.Position = this.PointToScreen(new Point(this.Width/2, -10));
これにより、カーソルがタイトルバーのフォームの中央に配置されます。カーソルを画面外に移動しないように、いくつかのチェックを行う必要がある場合があります。
これが少しお役に立てば幸いです。