• 締切済み

DataGridViewのチェックボックス

現在DataGridViewのチェックボックスの状態で難儀しております。 DataGridViewのチェックボックス操作に、 CurrentCellDirtyStateChangedで未コミット分の判定を行い、 コミットしてからCellValueChangedで値をとる一般的な手法を用いております。 チェックボックスを単純にTrue/Falseして入力制御したりする分にはこれで問題ないです。 しかしながら、Falseした際に、他の入力セルが変更されていた場合に、 「変更内容が消えるがよろしいか?」といった内容のダイアログを出し、 場合によってはチェックボックスの値を元に戻すということを実現したいと思います。 そこでダイアログで「いいえ」を選択された場合に、 チェックボックスのValueをTrueに戻し、 発生したイベントは別に持たせたフラグでスルーするようにしましたが、 Valueは確かにTrueなのですが、表示上がFalseのままであり、 タブ移動して初めて表示上が変わる状態になってしまっています。 そこでグリッドの表面上のリフレッシュ等が必要かと思いましたが、 方法が思い浮かばず途方に暮れています。 どなたか知恵をお貸しください。

みんなの回答

  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.2

Update()でもダメだとすると…無理かな……。 DataGridView.InvalidateでDataGridView全体を再描画かけてみる…とかでしょうか……。

  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.1

>そこでグリッドの表面上のリフレッシュ等が必要かと思いましたが、 >方法が思い浮かばず途方に暮れています。 DataGridView.InvalidateCell メソッドで無効化して、 Control.Update メソッド(DataGridView.Update メソッド)で描画させる。 というのはどうなんでしょうか? # Updateはもしかしたら不要かも知れませんが…。 http://msdn.microsoft.com/ja-jp/library/system.windows.forms.datagridview.invalidatecell%28v=vs.80%29.aspx http://msdn.microsoft.com/ja-jp/library/system.windows.forms.control.update%28v=vs.80%29.aspx # .NET Framework 2.0なページですが…3.5や4.0でも同様でしょう。

leolio0701
質問者

補足

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

関連するQ&A

専門家に質問してみよう