sábado, 9 de marzo de 2013

Agregar columnas a un Datagridview

A continuación tenemos un ejemplo que permitirá personalizar las columnas del datagridview.


Código fuente


Paso 1: Configuramos el nuevo tamaño de las columna al momento de cargar el formulario.

Private Sub Form1_Load(ByVal sender As System.ObjectByVal e As System.EventArgsHandles MyBase.Load
       Habilitar el cambio de tamaño en los encabezados de columna
        DataGridView1.ColumnHeadersHeightSizeMode = _
            DataGridViewColumnHeadersHeightSizeMode.EnableResizing
        'Ajustamos el alto para la columna cabecera 
        DataGridView1.ColumnHeadersHeight = _
            DataGridView1.ColumnHeadersHeight * 2
        Ajuste la alineación del texto en los encabezados de las  
        columnas para que la visualización 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.ObjectByVal e As System.Windows.Forms.PaintEventArgsHandles 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 límites 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.ColumnHeadersDefaultCellStyle.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.ObjectByVal e As System.Windows.Forms.DataGridViewCellPaintingEventArgsHandles DataGridView1.CellPainting
        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

No hay comentarios:

Publicar un comentario