現在Windows Formsで、画面左側にDataGridView、右側にテキストボックスやチェックボックスなどを表示するようなシステムの開発をしています。
その中で入力された内容をデータベースに保存、行が切り替わるときにその選択した行の内容をテキストボックスなどに反映する、という処理を行う必要があリます。
しかし、SelectionChangedイベントではCurrentRowを用いたり下記のようなコーディングをしても移動後の行インデックスを取得してくるようで、移動元のデータを更新する処理をうまく書けずにいます。
どうにかして同一イベント内で移動元と移動先の行インデックスを処理する方法はないものでしょうか?
(どこかで引数eの型をDataGridViewCellEventArgsにしてe.RowIndexとすれば移動元のインデックスを取得できる旨の文章を見た気がするのですが、単純に型を変えただけではInvalidCastExceptionが発生しデバッグできませんでした)
VB
1Private Sub dataGridView1_SelectionChanged(sender As Object, e As EventArgs) Handles dataGridView1.SelectionChanged 2 For Each row As DataGridViewRow In dataGridView1.SelectedRow 3 Dim index As Integer = dataGridView1.Rows(row.Index).Index 4 Next 5 'データ保存・更新を行う関数を呼んだ後、新しい行の情報を表示する関数を呼び出します 6End Sub
---20190106追記---
大事なことを書き忘れていましたが、現在更新周りの処理をRowLeaveイベント内で行っています。
このイベントがテキストボックスなどにフォーカスが移った際にも発生してしまうので、一度の処理で何度も更新処理が行われバグの一因になっているため、できればイベントを分けないほうが良いのではと思い質問しました。

回答1件
あなたの回答
tips
プレビュー