概要
- DataGridViewのCellValueChangedイベントは、フォーカスが外れた時に発生する
- フォーカスが外れなくても、値の変更を反映させるために、コミット処理を行う
DataGridViewのチェック値変更結果を画面に表示する
VB
Private Sub DataGridView1_CellValueChanged(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellValueChanged
'チェックボックス列でない場合、スキップ
If e.ColumnIndex <> DataGridView1.Columns("Col1").Index Then Return
'チェック時、「チェックオン」と表示する
If dt.Rows(e.RowIndex).Item(e.ColumnIndex).ToString = "True" Then
MessageBox.Show("チェックオン")
Else
MessageBox.Show("チェックオフ")
End If
End Sub
即時反映させるための処理
VB
Private Sub DataGridView1_CurrentCellDirtyStateChanged(sender As Object, e As EventArgs) Handles DataGridView1.CurrentCellDirtyStateChanged
'編集をコミット
If DataGridView1.IsCurrentCellDirty Then
DataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit)
End If
End Sub
動作確認用コード
VB
Public dt As New DataTable
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
With dt
.Columns.Add("Col1", GetType(Boolean))
.Columns.Add("Col2", GetType(String))
.Rows.Add(False, "TEST1")
.Rows.Add(False, "TEST2")
End With
With DataGridView1
.DataSource = dt
.AllowUserToAddRows = False
End With
End Sub
コメント