2008-12-02 9 views
2

La grille afficher toutes les informations correctement, Dans le cas de dataGridView1cellFormatting je change la couleur de fond en fonction de l'objet sous la valeur de la ligne. Cela fonctionne aussi. Le dernier événement que j'ai sur ma grille est le dataGridView1_CellPainting qui vérifie si c'est l'en-tête pour ajouter une icône. Tout va bien jusqu'à ce que j'essaie de sortir la couleur de la ligne sélectionnée (ou la cellule fait la même chose). Ce que je voudrais, c'est prendre la couleur de la ligne sélectionnée. J'ai essayé de le mettre avec "transparent" mais quand le contrôle lie des données, la ligne est grise et quand nous redimensionnons la taille de colonne le texte n'est pas lisible.DataGridView SelectLine couleur à aucun?

Comment afficher les données dans DataGridView sans mettre en surbrillance la ligne sélectionnée?

Répondre

5

Vous pouvez définir la propriété SelectionForeColor et SelectionBackColor sur la couleur de la couleur de surbrillance souhaitée. Cela peut être défini sur la propriété DefaultCellStyle sur DataGridView ou sur les cellules individuelles elle-même. De cette façon, les couleurs ne changeront pas lorsque la ligne est sélectionnée.

Private Sub dgv_CellFormatting(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellFormattingEventArgs) Handles dgv.CellFormatting 
    If e.RowIndex < 0 Then Exit Sub 

    If e.RowIndex Mod 2 = 0 Then 
     e.CellStyle.BackColor = Color.Orange 
    Else 
     e.CellStyle.BackColor = Color.Red 
    End If 

    'Make the selected cell the same color 
    e.CellStyle.SelectionBackColor = e.CellStyle.BackColor 
    e.CellStyle.SelectionForeColor = e.CellStyle.ForeColor 
End Sub