DOBON様のページとzenmai software様のページのコードを一部変更し、ミックスして作成した。
動作OKのようだ。
'CurrentCellDirtyStateChangedイベントハンドラ
Private Sub DataGridView1_CurrentCellDirtyStateChanged( _
ByVal sender As Object, ByVal e As EventArgs) _
Handles DataGridView1.CurrentCellDirtyStateChanged
If DataGridView1.CurrentCellAddress.X = 0 AndAlso _
DataGridView1.IsCurrentCellDirty Then
'コミットする
DataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit)
End If
End Sub
Private Sub DataGridView1_CurrentCellDirtyStateChanged( _
ByVal sender As Object, ByVal e As EventArgs) _
Handles DataGridView1.CurrentCellDirtyStateChanged
If DataGridView1.CurrentCellAddress.X = 0 AndAlso _
DataGridView1.IsCurrentCellDirty Then
'コミットする
DataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit)
End If
End Sub
Private Sub DataGridView1_CellValueChanged(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellValueChanged
Dim rowIndex As Integer
If fmF = True Then
If e.ColumnIndex = 0 Then
If Boolean.Parse(DataGridView1(e.ColumnIndex, e.RowIndex).Value) = True Then
For rowIndex = 0 To DataGridView1.Rows.Count - 1
If rowIndex <> e.RowIndex Then
DataGridView1(0, rowIndex).Value = False
DataGridView1(0, rowIndex).ReadOnly = False
End If
Next
DataGridView1(e.ColumnIndex, e.RowIndex).ReadOnly = True
End If
End If
End If
End Sub
If e.ColumnIndex = 0 Then
If Boolean.Parse(DataGridView1(e.ColumnIndex, e.RowIndex).Value) = True Then
For rowIndex = 0 To DataGridView1.Rows.Count - 1
If rowIndex <> e.RowIndex Then
DataGridView1(0, rowIndex).Value = False
DataGridView1(0, rowIndex).ReadOnly = False
End If
Next
DataGridView1(e.ColumnIndex, e.RowIndex).ReadOnly = True
End If
End If
End If
End Sub
------
引用ページ
【 DOBON様 】
【 zenmai software様 】
------
フラグ fmF は、フォームのLoadイベント完了後にTrueとするようにしておく。