今回は、データグリッドに配置したチェックボックス列にイベントを仕込みたいと思います。
プログラムは前回のものを流用。
【VB.NET】データグリッドビューで行毎のコンボボックスにイベントを仕込む
データグリッドビューの現在のセル状態が変更された際のイベントを追加します。
Form1.vb
''' <summary>
''' データグリッドビューの現在のセル状態が変更された際のイベント
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub dgv_CurrentCellDirtyStateChanged(sender As Object, e As EventArgs) Handles dgv.CurrentCellDirtyStateChanged
' 対象のセルを判定
If dgv.CurrentCellAddress.X = 0 AndAlso dgv.IsCurrentCellDirty Then
' 変更を確定する
dgv.CommitEdit(DataGridViewDataErrorContexts.Commit)
End If
End Sub
データグリッドビューのセル値が変更された際のイベントを追加
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)
MessageBox.Show(e.RowIndex + 1 & "行目のチェックボックス値:" & chk.Value)
End If
End Sub
データグリッドビューのセルがクリック(マウスダウン)された際のイベントを追加
Form1.vb
''' <summary>
''' データグリッドビューのセルをクリック(マウスダウン)した際のイベント
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub dgv_CellMouseDown(sender As Object, e As DataGridViewCellMouseEventArgs) Handles dgv.CellMouseDown
If (TypeOf dgv(e.ColumnIndex, e.RowIndex) Is DataGridViewCheckBoxCell) Then
Dim cell As DataGridViewCheckBoxCell = dgv(e.ColumnIndex, e.RowIndex)
cell.Value = If(cell.Value = False, True, False)
' 変更を確定する
dgv.CommitEdit(DataGridViewDataErrorContexts.Commit)
dgv.EndEdit()
End If
End Sub
無事に処理できましたね。
次回は、チェックされた行の背景色を変更してみたいと思います。
【VB.NET】データグリッドビューでチェックされた行の背景色を変更する
ではでは。
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント