引き続きVB.NETの話し。
せっかくチェックボックスにイベントを仕込んだのでそれをトリガーにして背景色を変更する処理を実装したいと思います。
プログラムは下記のものを流用します。
【VB.NET】データグリッドビューで行毎のチェックボックスにイベントを仕込む## プログラムの修正
グローバルの定数として背景色を定義します。
Form1.vb
' 通常時の背景色
Private Const BG_NORMAL = "#FFFFFF"
' 強調時の背景色
Private Const BG_HIGHLIGHT = "#FFE7E7"
' 選択時の背景色
Private Const BG_SELECTED = "#EF9A94"
データグリッドビューのセル値が変更(が確定)された際のイベントで背景色を変更します。
Form1.vb
''' <summary>
''' データグリッドビューのセル値が変更(が確定)された際のイベント
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub dgv_CellValueChanged(sender As Object, e As DataGridViewCellEventArgs) Handles dgv.CellValueChanged
If (TypeOf dgv(e.ColumnIndex, e.RowIndex) Is DataGridViewCheckBoxCell) Then
Dim chk As DataGridViewCheckBoxCell = dgv(e.ColumnIndex, e.RowIndex)
Dim dgs = New DataGridViewCellStyle()
If (chk.Value = True) Then
dgs.BackColor = System.Drawing.ColorTranslator.FromHtml(BG_SELECTED)
Else
dgs.BackColor = System.Drawing.ColorTranslator.FromHtml(BG_NORMAL)
End If
dgv.Rows(e.RowIndex).DefaultCellStyle = dgs
End If
End Sub
CellMouseEnter、CellMouseLeaveの2つを追加します。
マウスオーバーした際に背景色を変更して強調します。
Form1.vb
''' <summary>
''' データグリッドビューのセルにマウスポインターがフォーカスした際のイベント
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub dgv_CellMouseEnter(sender As Object, e As DataGridViewCellEventArgs) Handles dgv.CellMouseEnter
' ヘッダーは処理しない
If e.ColumnIndex >= 0 And e.RowIndex >= 0 Then
Dim dgv As DataGridView = CType(sender, DataGridView)
' 背景色を変更する
dgv.Rows(e.RowIndex).DefaultCellStyle.BackColor = System.Drawing.ColorTranslator.FromHtml(BG_HIGHLIGHT)
End If
End Sub
''' <summary>
''' データグリッドビューのセルからマウスポインターがフォーカスアウトした際のイベント
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub dgv_CellMouseLeave(sender As Object, e As DataGridViewCellEventArgs) Handles dgv.CellMouseLeave
' ヘッダーは処理しない
If e.ColumnIndex >= 0 And e.RowIndex >= 0 Then
Dim dgv As DataGridView = CType(sender, DataGridView)
If (dgv(0, e.RowIndex).Value) Then
' 選択された状態に戻す
dgv.Rows(e.RowIndex).DefaultCellStyle.BackColor = System.Drawing.ColorTranslator.FromHtml(BG_SELECTED)
Else
' 背景色を戻す
dgv.Rows(e.RowIndex).DefaultCellStyle.BackColor = System.Drawing.ColorTranslator.FromHtml(BG_NORMAL)
End If
End If
End Sub
マウスポインターがある行が強調表示されます。
チェックすると選択された行の背景色が変わります。
無事にマウスオーバーで強調表示、チェックボックスにチェックで選択表示ができました。
C#と同様、VB.NETでも色々な事ができそうです。
せっかくなので、この後はまたデータベースからデータをひっぱってきたりってのをやろうかと思います。
ではでは。
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント