【VB.NET】データグリッドビューで行毎のチェックボックスにイベントを仕込む
おはようございます。
今回は、データグリッドに配置したチェックボックス列にイベントを仕込みたいと思います。
プログラムは前回のものを流用。
プログラムの修正
スポンサーリンク
新規イベントの追加
データグリッドビューの現在のセル状態が変更された際のイベントを追加します。

Form1.vb
1 2 3 4 5 6 7 8 9 10 11 12 | ''' <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
1 2 3 4 5 6 7 8 9 10 11 12 13 | ''' <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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | ''' <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 |
起動してみる


無事に処理できましたね。
まとめ
次回はチェックされた行の背景色なんかを変えてみたいと思います。
ではでは。
ディスカッション
コメント一覧
まだ、コメントがありません