DOBON.NET DOBON.NETプログラミング掲示板過去ログ

DataGridViewの選択行について

環境/言語:[VB.NET、.NET Framework 3.5]
分類:[.NET]

DataGridViewコントロールを使用した一覧の選択行を変更したとき、
ある条件時において、変更前の元の行に戻すことをしたいのですが・・・。


現状は、CurrentCellChangedイベントに、

Me.DataGridView1.CurrentCell = Me.DataGridView1(0, 変更前の行番号)

としているのですが、実行すると、以下の例外が発生してしまいます。

「SetCurrentCellAddressCore 関数への再入呼び出しを生じるため、この操作は有効ではありません。」

このエラーの回避方法があれば、ご教授願えますでしょうか。

また通常、グリッド行が変更されたときの処理を追加するのは、
どのイベントに使うのが適切なのでしょうか?

宜しくお願いします。
■No22147に返信(シロイヌさんの記事)
> DataGridViewコントロールを使用した一覧の選択行を変更したとき、
> ある条件時において、変更前の元の行に戻すことをしたいのですが・・・。
>
>
> 現状は、CurrentCellChangedイベントに、
>
> Me.DataGridView1.CurrentCell = Me.DataGridView1(0, 変更前の行番号)
>
> としているのですが、実行すると、以下の例外が発生してしまいます。
>
> 「SetCurrentCellAddressCore 関数への再入呼び出しを生じるため、この操作は有効ではありません。」
>
> このエラーの回避方法があれば、ご教授願えますでしょうか。
>
> また通常、グリッド行が変更されたときの処理を追加するのは、
> どのイベントに使うのが適切なのでしょうか?
>
> 宜しくお願いします。

エラー内容の
> 「SetCurrentCellAddressCore 関数への再入呼び出しを生じるため、この操作は有効ではありません。」
で検索すると、シロイヌさんと同じような事例・解決例が結構出てきますね。

因みに、純粋に「DataGridViewの選択行が変更されたとき」に発生するイベントは
「SelectionChanged」です。
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.datagridview.selectionchanged(VS.80).aspx
■No22148に返信(カドルドエグさんの記事)
>
> エラー内容の
>>「SetCurrentCellAddressCore 関数への再入呼び出しを生じるため、この操作は有効ではありません。」
> で検索すると、シロイヌさんと同じような事例・解決例が結構出てきますね。

花ちゃんさんのHPの掲示板に同じような質問がありました。

それを参考にし、

Me.DataGridView1(0, 変更前の行番号).Selected = True

とすると、うまくいきました。

ご回答、ありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板