0% encontró este documento útil (0 votos)
504 vistas5 páginas

Personaliza Columnas en DataGridView

Este documento proporciona instrucciones para agregar columnas combinadas a un control DataGridView en Windows Forms. Explica cómo configurar el evento Paint para dibujar celdas de encabezado que abarquen múltiples columnas y mostrar texto de encabezado compartido. También cubre cómo ajustar el estilo y tamaño de las celdas de encabezado para lograr este efecto de fusión de columnas.

Cargado por

percy2880
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
504 vistas5 páginas

Personaliza Columnas en DataGridView

Este documento proporciona instrucciones para agregar columnas combinadas a un control DataGridView en Windows Forms. Explica cómo configurar el evento Paint para dibujar celdas de encabezado que abarquen múltiples columnas y mostrar texto de encabezado compartido. También cubre cómo ajustar el estilo y tamaño de las celdas de encabezado para lograr este efecto de fusión de columnas.

Cargado por

percy2880
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Agregar columnas a un Datagridview

Hola a todos...
A continuacin tenemos un ejemplo que permitir personalizar
las columnas del datagridview.
Imagen
******

Cdigo fuente
************
Paso 1:
******
'Configuramos el nuevo tamao de las columna al momento de cargar el formulario.
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) H
andles MyBase.Load
' Habilitar el cambio de tamao en los encabezados de columna
DataGridView1.ColumnHeadersHeightSizeMode = _
DataGridViewColumnHeadersHeightSizeMode.EnableResizing
'Ajustamos el alto para la columna cabecera
DataGridView1.ColumnHeadersHeight = _
DataGridView1.ColumnHeadersHeight * 2
' Ajuste la alineacin del texto en los encabezados de las

' columnas para que la visualizacin de texto en el centro de la parte inferior


DataGridView1.ColumnHeadersDefaultCellStyle.Alignment = _
DataGridViewContentAlignment.BottomCenter
End Sub

Paso 2:
******

'Dibujamos las columnas


Private Sub DataGridView1_Paint(ByVal sender As System.Object, ByVal e As System.Win
dows.Forms.PaintEventArgs) Handles DataGridView1.Paint
' Datos para las celdas de cabezera
Dim Grupos As String() = {"GRUPO 1", "GRUPO 2"}
For j As Integer = 0 To DataGridView1.ColumnCount - 1 Step 2
' Obtener los lmites de encabezado de columna
Dim r1 As Rectangle = DataGridView1.GetCellDisplayRectangle(j, -1, True)
r1.X += 1

r1.Y += 1
r1.Width = r1.Width * 2 - 2
r1.Height = r1.Height / 2 - 2
Using br As SolidBrush = _
New SolidBrush(DataGridView1.ColumnHeadersDefaultCellStyle.BackColor)
e.Graphics.FillRectangle(br, r1)
End Using
Using p As Pen = New Pen(SystemColors.InactiveBorder)
e.Graphics.DrawLine(p, r1.X, r1.Bottom, r1.Right, r1.Bottom)
End Using
Using format As StringFormat = New StringFormat()
Using br As SolidBrush = New SolidBrush(DataGridView1.ColumnHeadersDefaultCell
Style.ForeColor)
format.Alignment = StringAlignment.Center
format.LineAlignment = StringAlignment.Center
e.Graphics.DrawString(Grupos(j / 2),
DataGridView1.ColumnHeadersDefaultCellStyle.Font, _
br, r1, format)
End Using
End Using
Next
End Sub

Paso 3:
******
'Dibujamos las celdas
Private Sub DataGridView1_CellPainting(ByVal sender As System.Object, ByVal e As Sys
tem.Windows.Forms.DataGridViewCellPaintingEventArgs) Handles DataGridView1.CellPaint
ing
If e.RowIndex = -1 AndAlso e.ColumnIndex > -1 Then
e.PaintBackground(e.CellBounds, False)
Dim r2 As Rectangle = e.CellBounds
r2.Y += e.CellBounds.Height / 2
r2.Height = e.CellBounds.Height / 2
e.PaintContent(r2)
e.Handled = True
End If
End Sub

Fuentes de Informacin
*******************

Recopilacin de distintas fuentes.

Mostrando varios encabezados de columnas combinados en un


DataGridView
Problema: Deseo tener, como en Microsoft Excel, un encabezado doble en dos columnas que
estn combinados.
De esta manera.
-----------------------------------------------------| Enero
|
Febrero
| Marzo
|
| Gan | Perdi | Gan | Perdi | Gan | Perdi |
-----------------------------------------------------|
|
|
|
|
|
|
|
|
|
|
|
|
|
-----------------------------------------------------Solucin: Se debe personalizar el evento Paint.
Para mayor entendimiento, pongo un ejemplo.
Tengo un formulario llamado Form1, el cual contiene un grid llamado DataGridView1.
En el evento load del formulario lleno el grid.
?
1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load

2
3

'Lleno los datos del grid


With DataGridView1

.Columns.Add("", "Gan")

.Columns.Add("", "Perdi")

.Columns.Add("", "Gan")

.Columns.Add("", "Perdi")

8
9

.Columns.Add("", "Gan")
.Columns.Add("", "Perdi")

10
.ColumnHeadersHeightSizeMode =

11DataGridViewColumnHeadersHeightSizeMode.EnableResizing
12

.ColumnHeadersHeight = .ColumnHeadersHeight * 2

.ColumnHeadersDefaultCellStyle.Alignment =
DataGridViewContentAlignment.BottomCenter

13
14

End With

15

End Sub

Luego, se personaliza el evento Paint del DataGridView.


?
Private Sub dataGridView1_Paint(ByVal sender As System.Object, ByVal e As
1 System.Windows.Forms.PaintEventArgs) Handles DataGridView1.Paint
Dim monthes As String() = {"Enero", "Febrero", "Marzo"}

2
3

Dim j As Integer = 0

While j < 6

Dim r1 As Rectangle =

6 Me.DataGridView1.GetCellDisplayRectangle(j, -1, True)


7

r1.X += 1

r1.Y += 1
r1.Width = r1.Width * 2 - 2

9
10

r1.Height = r1.Height / 2 - 2

11
e.Graphics.FillRectangle(New

12SolidBrush(Me.DataGridView1.ColumnHeadersDefaultCellStyle.BackColor),
r1)

13
14

Dim format As New StringFormat()

15
16
17

format.Alignment = StringAlignment.Center
format.LineAlignment = StringAlignment.Center

18

e.Graphics.DrawString(monthes(j \ 2),
Me.DataGridView1.ColumnHeadersDefaultCellStyle.Font,
_
19
New

20SolidBrush(Me.DataGridView1.ColumnHeadersDefaultCellStyle.ForeColor),
21r1, format)
22

j += 2
End While

End Sub

También podría gustarte