【VB.NET】データグリッドビューでチェックされた行の背景色を変更する
おはようございます。
昨日に引き続きVB.NETの話し。
せっかくチェックボックスにイベントを仕込んだのでそれをトリガーにして背景色を変更する処理を実装したいと思います。
プログラムは下記のものを流用します。
プログラムの修正
背景色の定義を追加
グローバルの定数として背景色を定義します。
Form1.vb
1 2 3 4 5 6 | ' 通常時の背景色 PrivateConstBG_NORMAL="#FFFFFF" ' 強調時の背景色 PrivateConstBG_HIGHLIGHT="#FFE7E7" ' 選択時の背景色 PrivateConstBG_SELECTED="#EF9A94" |
既存処理の修正
データグリッドビューのセル値が変更(が確定)された際のイベントで背景色を変更します。
Form1.vb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | ''' <summary> ''' データグリッドビューのセル値が変更(が確定)された際のイベント ''' </summary> ''' <param name="sender"></param> ''' <param name="e"></param> PrivateSubdgv_CellValueChanged(sender AsObject,eAsDataGridViewCellEventArgs)Handlesdgv.CellValueChanged If(TypeOfdgv(e.ColumnIndex,e.RowIndex)Is DataGridViewCheckBoxCell)Then Dimchk AsDataGridViewCheckBoxCell=dgv(e.ColumnIndex,e.RowIndex) Dimdgs=NewDataGridViewCellStyle() If(chk.Value=True)Then dgs.BackColor=System.Drawing.ColorTranslator.FromHtml(BG_SELECTED) Else dgs.BackColor=System.Drawing.ColorTranslator.FromHtml(BG_NORMAL) EndIf dgv.Rows(e.RowIndex).DefaultCellStyle=dgs EndIf EndSub |
新規イベントの追加
CellMouseEnter、CellMouseLeaveの2つを追加します。
マウスオーバーした際に背景色を変更して強調します。
Form1.vb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | ''' <summary> ''' データグリッドビューのセルにマウスポインターがフォーカスした際のイベント ''' </summary> ''' <param name="sender"></param> ''' <param name="e"></param> PrivateSubdgv_CellMouseEnter(sender AsObject,eAsDataGridViewCellEventArgs)Handlesdgv.CellMouseEnter ' ヘッダーは処理しない Ife.ColumnIndex>=0Ande.RowIndex>=0Then Dimdgv AsDataGridView=CType(sender,DataGridView) ' 背景色を変更する dgv.Rows(e.RowIndex).DefaultCellStyle.BackColor=System.Drawing.ColorTranslator.FromHtml(BG_HIGHLIGHT) EndIf EndSub ''' <summary> ''' データグリッドビューのセルからマウスポインターがフォーカスアウトした際のイベント ''' </summary> ''' <param name="sender"></param> ''' <param name="e"></param> PrivateSubdgv_CellMouseLeave(sender AsObject,eAsDataGridViewCellEventArgs)Handlesdgv.CellMouseLeave ' ヘッダーは処理しない Ife.ColumnIndex>=0Ande.RowIndex>=0Then Dimdgv AsDataGridView=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) EndIf EndIf EndSub |
起動してみる
マウスポインターがある行が強調表示されます。
チェックすると選択された行の背景色が変わります。
無事にマウスオーバーで強調表示、チェックボックスにチェックで選択表示ができました。
まとめ
C#と同様、VB.NETでも色々な事ができそうです。
せっかくなので、この後はまたデータベースからデータをひっぱってきたりってのをやろうかと思います。
ではでは。
ディスカッション
コメント一覧
まだ、コメントがありません