2009-10-07 6 views
1

J'ai une application Windows C# qui utilise un DataGridView avec trois colonnes. Le premier est une zone de texte qui ne nécessite aucune validation. Les deuxième et troisième colonnes sont les deux cases à cocher. J'ai besoin d'aide pour déterminer si les cases sont cochées ou non. Si c'est le cas, j'aimerais que la couleur de fond de la cellule de la case à cocher soit rouge. J'utilise l'événement DataGridView1_CellContentClick pour cela. Toute aide ou suggestion serait appréciée.Besoin de connaître l'état d'une cellule case à cocher dans un DataGridView

+0

j'oublié de mentionner. Les données sont saisies par l'utilisateur, pas à partir d'un DataSource. – DaBomb

Répondre

0

essayer cette

void DataGridView1_CellValueChanged(object sender System.Windows.Forms.DataGridViewCellEventArgs e) 
{ 
    if((bool)DataGridView1.Rows[e.RowIndex].Cells[ e.ColumnIndex].Value) 
      DataGridView1.Rows[e.RowIndex].Cells[ e.ColumnIndex].DefaultCellStyle.BackColor = Color.Red; 
} 
+0

J'ai besoin du code pour déterminer si la case est cochée ou non cochée. – DaBomb

+0

si la cellule cliquée est DataGridViewCheckBoxCell DataGridView1.Rows [e.RowIndex] .Cells [e.ColumnIndex] .Value renvoie true si elle est cochée et false elle est décochée – IordanTanev

+0

Je reçois une erreur de génération sur "DefaultCellStyle.BackColor". Il déclare "" System.Windows.Forms.DataGridViewCell "ne contient pas une définition de" DefaultCellStyle "...." Je l'ai changé pour "DataGridView.BackgroundColor". Mon code se compile maintenant mais j'obtiens une erreur sur "DataGridView.BackgroundColor". Il indique que "l'index était hors de portée, doit être non négatif et inférieur à la taille de la collection Nom du paramètre: index". Cet événement se déclenche lorsque l'application s'exécute avant que j'essaie d'entrer une nouvelle ligne et avant même que le formulaire est affiché. – DaBomb

0

les opérations suivantes:

bool test=false; 
     test=Convert.Toboolean(DataGridView1.Rows[0].cells[0].Value); 
    // if test=true then 
    // its checked and if no then its unchecked. 
-1
Private Sub DataGridView1_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick 
    Try 
     If e.ColumnIndex = 8 Then 
      Label1.Text = DataGridView1.Rows(e.RowIndex).Cells(0).Value 
      FrmVisits.Show() 

     ElseIf e.ColumnIndex = 9 Then 
      Label1.Text = DataGridView1.Rows(e.RowIndex).Cells(0).Value 
      FrmPEdit.Show() 
     Else 
      Exit Sub 
     End If 
    Catch ex As Exception 
     Exit Sub 
    End Try 




End Sub 
Questions connexes