tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルDataGridViewのチェックボックス
記事No10445
投稿日: 2011/02/27(Sun) 17:52
投稿者ダンボ
皆さん、こんにちは。お久しぶりです。
DataGridViewのチェックボックスがチェックされているかどうか見えづらいので
背景色を変えたいです。(Windows7、VB2010)
現在は下記コードのようにCellValueChangedイベントで描き変えることにより
うまく動作していますが、DataGridViewのプロパティ等で、システムが自動的に
処理するようにできませんか?
(オーナドローも考えましたが、下記コードよりも重くなりそうなので却下)

Private Sub GRID_CellValueChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles GRID.CellValueChanged
    If GRID.IsHandleCreated AndAlso e.RowIndex > 0 Then
        If CBool(GRID.Item(COL.Check, e.RowIndex).Value) Then
            GRID.Item(COL.Check, e.RowIndex).Style.BackColor = Color.Green
        Else
            GRID.Item(COL.Check, e.RowIndex).Style.BackColor = Color.White
        End If
    End If
End Sub

[ツリー表示へ]
タイトルRe: DataGridViewのチェックボックス【修正】
記事No10446
投稿日: 2011/03/03(Thu) 17:04
投稿者花ちゃん
> DataGridViewのチェックボックスがチェックされているかどうか見えづらいので

FlatStyle.Popup にすれば、少しは見易くなるのですが?
(ForeColor や Font も変更できるともっと見易くはなるかと思うのですが...。!)

Dim newColumn1 As New DataGridViewCheckBoxColumn
With newColumn1
   .CellTemplate = New DataGridViewCheckBoxCell()
   .CellTemplate.Style.BackColor = Color.White
   .CellTemplate.Style.ForeColor = Color.Red
   .FlatStyle = FlatStyle.Popup
End With

[ツリー表示へ]
タイトルDataGridViewのチェックボックス【済】
記事No10447
投稿日: 2011/03/05(Sat) 06:58
投稿者ダンボ
花ちゃんさん、どうもありがとうございます

>    .CellTemplate.Style.BackColor = Color.White
>    .CellTemplate.Style.ForeColor = Color.Red
>    .FlatStyle = FlatStyle.Popup

いくつかの組み合わせを試してみますね。

余談ですが、この自作ソフトはVB2005のソースをVB2010で自動アップデート
させたものですが、単純移行しただけでは「チェックしているにも拘らず、
チェックマークが表示されない」という現象が起き、1週間ほど悩みました。
Windows7がいけないのかVB2010のせいなのか?

結論は...
VB2010上でDataGridViewのデザインを微修正して1ピクセルだけCheckBoxの
高さを大きくしたら正常に表示されるようになりました。
同じ現象で悩まれている方にどうぞ。

[ツリー表示へ]