List of of PartsにバインドされたDataGridViewがあります。リストの最後の項目は常に「ダミー部分」です。グリッドに余分な行を作成するために、ユーザーはリストに部品を追加するために最初のセルに入力することができます。 ユーザーがx個以上の文字を特定のセルに入力すると、入力しているセルの下に検索結果を含む新しいDataGridViewが表示され(Googleの候補を少し見て)、一致の1つを選択してその部分を追加できますリストに追加します。DataGridView NullReferenceExceptionはフォーカスを失った後InitializeEditingControlValueにある
私は、EditControlShowingイベントを処理することでこれを行います。このイベントは、TextChangedのハンドラを持つTextBox変数に '編集コントロール'を割り当てます。
バグ:
私は、ユーザが下矢印キーを打つ場合、フォーカスが第二のDataGridView(検索結果)へ変更したいです。 EditControlShowingハンドラは最初に正常に動作し、フォーカスを2番目のDataGridViewに移動し、最初のDataGridViewを「見かけ上」の機能状態にします。つまり、他のすべてのイベントハンドラが機能します。しかし、EditControlShowingハンドラが2回目に起動すると、DataGridViewはInitializeEditingControlValueでNullReferenceExceptionをスローします。 エラーをスローするDataGridViewの独自の呼び出しであるため、デバッガは私のコードで "Application.Run"に移動しますが、これは役に立ちません。 しかし、私は、DataGridViewをその状態にする呼び出しと、例外がスローされる点は、最初のDataGridViewからフォーカスを奪ったときに、2番目のDataGridView(または他のコントロールそのことについては)。 しかし、ユーザーが(マウスでクリックするなどして)DataGridViewにフォーカスを変更させると、DataGridViewは問題なくそのまま残ります。
EditControlShowingのハンドラ中にDataGridViewからフォーカスを奪う理由が、後で別の方法で動作する必要がある理由を知っている人はいますか?
私はCancelEdit、更新、有効/無効などを有効に試してみた...私を助けに
任意の提案は、DataGridViewの中に何が起こっているのを確認?私は前と後のブレークポイントでそれを調べることで何も目立つものを見つけることはできません。私はどのオブジェクトがDataGridViewの独自のコードとしてnullであるかを調べる方法を知りません...
多くのおかげです。