プロが教える店舗&オフィスのセキュリティ対策術

現在DataGridViewのチェックボックスの状態で難儀しております。

DataGridViewのチェックボックス操作に、
CurrentCellDirtyStateChangedで未コミット分の判定を行い、
コミットしてからCellValueChangedで値をとる一般的な手法を用いております。

チェックボックスを単純にTrue/Falseして入力制御したりする分にはこれで問題ないです。

しかしながら、Falseした際に、他の入力セルが変更されていた場合に、
「変更内容が消えるがよろしいか?」といった内容のダイアログを出し、
場合によってはチェックボックスの値を元に戻すということを実現したいと思います。

そこでダイアログで「いいえ」を選択された場合に、
チェックボックスのValueをTrueに戻し、
発生したイベントは別に持たせたフラグでスルーするようにしましたが、
Valueは確かにTrueなのですが、表示上がFalseのままであり、
タブ移動して初めて表示上が変わる状態になってしまっています。

そこでグリッドの表面上のリフレッシュ等が必要かと思いましたが、
方法が思い浮かばず途方に暮れています。

どなたか知恵をお貸しください。

A 回答 (2件)

Update()でもダメだとすると…無理かな……。


DataGridView.InvalidateでDataGridView全体を再描画かけてみる…とかでしょうか……。
    • good
    • 0

>そこでグリッドの表面上のリフレッシュ等が必要かと思いましたが、


>方法が思い浮かばず途方に暮れています。

DataGridView.InvalidateCell メソッドで無効化して、
Control.Update メソッド(DataGridView.Update メソッド)で描画させる。
というのはどうなんでしょうか?
# Updateはもしかしたら不要かも知れませんが…。

http://msdn.microsoft.com/ja-jp/library/system.w …
http://msdn.microsoft.com/ja-jp/library/system.w …
# .NET Framework 2.0なページですが…3.5や4.0でも同様でしょう。

この回答への補足

だめです。以下のメソッドは試しましたが効果ありません。
・InvalidateCell
・Update
・UpdateCell
表示が変わることはないです。

補足日時:2012/10/16 09:17
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!