2010-01-14 5 views
1

Il s'agit d'une application VB .NET dans laquelle nous affichons la sortie d'une instruction SQL dans une vue Datagrid. using .NET 2005.En-tête de vue de grille de données Couleur de grille

Nous devons obtenir les séparateurs des en-têtes sur le contrôle de grille pour être les mêmes couleurs que la grille de couleur sur le formulaire. Voir l'image ci-dessous:

alt text

Nous avons essayé de regarder à travers toutes les propriétés du contrôle DataGridView, et a trouvé des choses intéressantes qui semblent prometteurs comme le DataGridViewAdvancedHeaderStyle et DataGridViewHeaderBorderStyle, mais aucun ne semble pour te permettre de changer les couleurs dessus.

Est-ce que quelqu'un sait comment faire cela sans refaire le tout avec un contrôle GDI +?

+0

Je ne vois pas l'image. Est-ce juste mon ordinateur? – John

+0

Oui, c'est probablement juste votre ordinateur. Je ne crois pas que ce site a des droits spécifiques sur qui peut et ne peut pas voir les images postées par d'autres. – Jrud

Répondre

2

Eh bien, je n'ai trouvé un bien pour cela, donc j'ai fini par créer un composant personnalisé et surcharger le gestionnaire d'événements OnPaint pour dessiner une ligne sur l'existant.

Voici le code pour si quelqu'un d'autre vient jamais sur ce poste à la recherche d'une solution:

Private Sub CustomDataGridView_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint 
    Dim g As Graphics = e.Graphics 
    Dim pen As New Pen(Me.GridColor) 
    Dim TWidth As Integer = 2 
    Dim HeaderWidth As Integer = 0 
    If Me.RowHeadersVisible Then 
     HeaderWidth = Me.RowHeadersWidth 
    End If 
    For Each column As DataGridViewColumn In Me.Columns 
     Dim x As Integer = HeaderWidth + TWidth - 1 
     TWidth += column.Width 
     Dim top As Integer = column.HeaderCell.ContentBounds.Top 
     Dim bottom As Integer = column.HeaderCell.ContentBounds.Bottom + 1 
     pen.Width = 2 
     g.DrawLine(pen, x, top, x, bottom) 
    Next column 
End Sub 
0

Je ne vois pas l'image mais qu'en est-il de jouer avec celles-ci?

DataGridView.ColumnBordersHeaderStyle 
DataGridView.RowBordersHeaderStyle 
+0

Le ColumnBorderHeaderStyle n'existe pas dans framework 2.0 La chose la plus proche que nous pourrions trouver à ceci est le ColumnHeadersBorderStyle qui est juste une énumération de son aspect, pas de spécification de couleur. Le RowBorderHeaderStyle contient des propriétés pour les en-têtes de ligne et nous avons des problèmes avec les en-têtes de colonne ... Je ne crois pas que les paramètres sont transférés de l'un à l'autre. – Jrud