2009-03-23 8 views
1

J'ai une case à cocher dans une forme de fenêtre de datagridview et ai un gestionnaire d'événement cell_Click sur le clic de cellule je vérifie la colonne de dataagridview pour une case à cocher il montre vrai si la cellule est aussi sélectionnée (cochez cette case et seulement la cellule viewagrid view est sélectionnée) et la case à cocher n'est pas sélectionnée .i essayé pour la colonne gettype et trouvé le type qu'il affiche DatagridViewCheckBox mais les valeurs incorrectes vérifiées.DatagridView Checkbox Vérifié?

Répondre

0

Plusieurs choses ici:

  • l'événement click cellulaire signifie simplement que l'utilisateur a cliqué avec le bouton de la souris sur l'affichage de la grille de données, ce que vous cherchez est probablement le CellValueChanged
  • cet événement vous donner les coordonnées de la cellule qui a changé. Vous devriez vérifier pour voir si c'est dans votre colonne de case à cocher, puis obtenir une référence à la cellule et vous pouvez vérifier le cell.Value pour voir si c'est vrai ou faux. Vous ne trouverez aucune valeur sur DataGridViewCheckBoxColumn - cela se fera au niveau de la cellule, et vous trouverez toujours la valeur stockée dans cell.Value, quel que soit le type de colonne.
9

Si je vous comprends bien, vous dites que la valeur de la case à cocher ne correspond pas aux données sous-jacentes?

Cela peut être dû au fait que les données ont été mises à jour et sont 'sales', par ex. il n'a pas encore été validé pour la source de données. Si vous ajoutez un gestionnaire d'événements comme celui-ci:

private void dataGridView1_CurrentCellDirtyStateChanged(object sender, EventArgs e) 
{ 
    if (dataGridView1.CurrentCell is System.Windows.Forms.DataGridViewCheckBoxCell) 
    { 
     dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit); 
    } 
} 

cela devrait mettre à jour la source de données et vous aurez l'état de case à cocher correcte lorsque vous interrogez la cellule.