Pregunta

Esta es una aplicación de VB .NET, donde estamos mostrando la salida de una instrucción SQL en una vista de cuadrícula de datos. utilizando .NET 2005.

Tenemos que conseguir los separadores de las cabeceras en el control de la red a ser los mismos colores que la GridColor en el formulario. Ver la imagen siguiente:

text alt

Hemos tratado de buscar a través de todas las propiedades del control DataGridView, y encontramos algunas cosas interesantes que parecía prometedor como el DataGridViewAdvancedHeaderStyle y DataGridViewHeaderBorderStyle, pero nada de esto parece que permitirá cambiar los colores en él.

¿Alguien sabe cómo hacer esto sin rehacer toda la cosa con un control de GDI +?

¿Fue útil?

Solución

Bueno, nunca llegué a encontrar una propiedad para esto, así que terminé la creación de un componente personalizado, y la sobrecarga del controlador de eventos OnPaint para dibujar una línea sobre la existente.

Este es el código para que si alguien alguna vez se encuentra con este post en busca de una solución:

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

Otros consejos

No puedo ver la imagen, pero ¿qué hay de jugar con ellos?

DataGridView.ColumnBordersHeaderStyle
DataGridView.RowBordersHeaderStyle
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top