5

チェックボックス列を含む .Net アプリケーションに DataGridView コントロールがあります。ユーザーがチェックボックスを編集できるようにしたいと思います。私が直面している問題は、ユーザーがチェックした後、チェックボックスの状態を検出できないことです。

チェックボックスが最初にチェックされていた場合、DataGridViewCheckBoxCell がフォーカスされるとすぐにチェックが返されます。しかし、チェックボックスをもう一度クリックしてチェックを外しても、チェックされたままになります。その時点から、チェックボックスの実際の状態に関係なく、フォーカスが失われて再び取得されるまで、常にチェックされた状態に戻ります。

同様に、チェックボックスが最初にチェックされていなかった場合、チェックボックスが実際にどのような状態であるかに関係なく、チェックボックスがフォーカスされるとクリックイベントでチェックされていない状態に戻ります。

これが私のコードです。

    Private Sub grdTemplates_CellContentClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles grdTemplates.CellContentClick
    Dim strValue As String = ""
    Try
        If Me.grdTemplates.Columns(e.ColumnIndex).Name = "colCurrentTemplate" Then
            'The user clicked on the checkbox column
            strValue = Me.grdTemplates.Item(e.ColumnIndex, e.RowIndex).Value

            'THIS VALUE NEVER CHANGES WHILE THE DataGridViewCheckBoxCell HAS FOCUS
            Me.lblTemplates.Text = strValue
        End If

    Catch ex As Exception
        HandleError(ex.ToString)
    End Try

End Sub

前もって感謝します、

マイク

4

1 に答える 1

4

これをコードに含めます。

Sub dataGridView1_CurrentCellDirtyStateChanged(ByVal sender As Object, ByVal e As EventArgs) Handles dataGridView1.CurrentCellDirtyStateChanged
    If dataGridView1.IsCurrentCellDirty Then
        dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit)
    End If
End Sub

ソース: http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.currentcelldirtystatechanged.aspx

于 2012-04-03T05:06:03.433 に答える