- - PR -
データグリッドビューのチェックボックスについて
1
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-07-06 17:13
お世話になります。
環境:VS2005、VB.NET、SQLServer 画面に、データグリッドビューがあります。 そこには、チェックボックスの列があり、チェックボックスが1つ選択されている 場合のみ、その行のデータを取得するプログラムを作成しています。 そして、画面の下にファンクションキーのボタンがあります。 F8を押したときと、ボタン(選択)を押した時は、同じ処理が流れます。 問題点は、シフトボタンでデータグリッドのチェックボックスを押して F8を押したら、なぜかデータが選択されていない旨のメッセージが表示されます。 セルを移動して、F8を押したら正しく選択されます。 F8を押す前に、データグリッドビューの再描画をしたのですが、 上手くうごきませんでした。 どなたかご存知の方は、お教えお願いいたします。 | ||||||||||||
|
投稿日時: 2006-07-06 17:20
お世話になります。
データグリッドビューの再描画をするよりは、セルを移動またはフォーカスを移動させたほうが早くないですか? #セルを移動できない理由があるのでしょうか? [ メッセージ編集済み 編集者: 深山 編集日時 2006-07-06 17:24 ] | ||||||||||||
|
投稿日時: 2006-07-06 17:31
こんにちは。
選択されているか否かの判断は Cell.Value プロパティで行っていたりしませんか? DataGridView のチェックボックスは、クリックした時点では Value プロパティの内容は変 更されず、フォーカスが移動した時点で [編集状態が完了] になるので、そのタイミング で Value プロパティが変更されます。 F8 を押した時点(セルを移動する前)では編集状態にあるとみなされていますので、 Value プロパティはチェック前の値を取得します。チェック無し→チェック有りにした場合は チェック無しを返します。 この場合は EditedFormattedValue プロパティを使用してみてください。 あるいは強制的に DataGridView.EndEdit() を呼び出すのもアリかもしれません。 | ||||||||||||
|
投稿日時: 2006-07-06 17:41
なぜかというと、後半に書かれたとおり、セルを移動したタイミングでコミットされるからです。
内部的な値の話ですから、再描画は一切関係ありません。
F8 が押下されたタイミングで、IsCurrentCellDirty プロパティが true かどうか判断し、 true であれば、CommitEdit メソッドを呼び出してみてはいかがでしょう? # EndEdit メソッドですと、編集状態が終了してしまいますよね。(多分) # それと、DataGridView を使ったことがないので、見当違いでしたらすみません... orz _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||
|
投稿日時: 2006-07-06 17:58
深山さん
ぽぴ王子さん じゃんぬねっとさん 様々な対象方法を教えて下さりありがとうございました。 問題なく動く事ができましたし、それ以上に凄い勉強になりました。 また、問題があった際はよろしくお願いします。 | ||||||||||||
|
投稿日時: 2006-07-06 19:39
一体全体どなたさんの案を使ったんすか? ってのを書かないと君にしか意味がないスレッドになっちゃうんじゃないの? |
1