2011-02-03 11 views
5

Ho un controllo DataGridView in un'applicazione Net che contiene una colonna casella. Vorrei che l'utente fosse in grado di modificare le caselle di controllo. Il problema che sto incontrando è che non riesco a rilevare lo stato della casella dopo che l'utente lo controlla.emissione di rivelazione di stato casella in DataGridView

Se la casella è stata originariamente selezionata, poi tornerà controllato appena il DataGridViewCheckBoxCell ottiene concentrarsi. Ma, se faccio di nuovo clic sulla casella di controllo e deseleziono, restituisce ancora selezionata. Da quel momento in poi, verrà sempre restituito controllato indipendentemente dallo stato effettivo della casella di controllo fino a quando non perde lo stato attivo e lo riprende nuovamente.

Allo stesso modo, se la casella di spunta non era stata deselezionata in origine, quindi quando viene attivato, verrà deselezionata nell'evento click indipendentemente da quale sia effettivamente lo stato della casella di controllo.

Ecco il mio codice.

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 

Grazie in anticipo,

Mike

risposta

Problemi correlati