¿Le resultó útil esta página?
Sus comentarios sobre este contenido son muy importantes. Háganos saber su opinión.
¿Tiene comentarios adicionales?
Caracteres restantes: 1500
Cómo: Personalizar la apariencia de las celdas en el control DataGridView de formularios Windows Forms
Este artículo se tradujo de forma manual. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

Cómo: Personalizar la apariencia de las celdas en el control DataGridView de formularios Windows Forms

Puede personalizar la apariencia de cualquier celda mediante el control del evento CellPainting del control DataGridView. Puede extraer el Graphics del control DataGridView de la propiedad Graphics de DataGridViewCellPaintingEventArgs. Con Graphics, puede modificar la apariencia de todo el control DataGridView, pero normalmente querrá modificar sólo a la apariencia de la celda que se está pintando actualmente. La propiedad ClipBounds de DataGridViewCellPaintingEventArgs le permite restringir sus operaciones de representación a la celda que está pintando.

En el ejemplo de código siguiente, pintará todas las celdas en una columna ContactName mediante la combinación de colores del control DataGridView. El contenido de texto de cada celda se pinta en la propiedad Crimson y se dibuja un rectángulo de bajorrelieve en el mismo color que la propiedad GridColor del control DataGridView.


private void dataGridView1_CellPainting(object sender,
System.Windows.Forms.DataGridViewCellPaintingEventArgs e)
{
    if (this.dataGridView1.Columns["ContactName"].Index ==
        e.ColumnIndex && e.RowIndex >= 0)
    {
        Rectangle newRect = new Rectangle(e.CellBounds.X + 1,
            e.CellBounds.Y + 1, e.CellBounds.Width - 4,
            e.CellBounds.Height - 4);

        using (
            Brush gridBrush = new SolidBrush(this.dataGridView1.GridColor),
            backColorBrush = new SolidBrush(e.CellStyle.BackColor))
        {
            using (Pen gridLinePen = new Pen(gridBrush))
            {
                // Erase the cell.
                e.Graphics.FillRectangle(backColorBrush, e.CellBounds);

                // Draw the grid lines (only the right and bottom lines;
                // DataGridView takes care of the others).
                e.Graphics.DrawLine(gridLinePen, e.CellBounds.Left,
                    e.CellBounds.Bottom - 1, e.CellBounds.Right - 1,
                    e.CellBounds.Bottom - 1);
                e.Graphics.DrawLine(gridLinePen, e.CellBounds.Right - 1,
                    e.CellBounds.Top, e.CellBounds.Right - 1,
                    e.CellBounds.Bottom);

                // Draw the inset highlight box.
                e.Graphics.DrawRectangle(Pens.Blue, newRect);

                // Draw the text content of the cell, ignoring alignment.
                if (e.Value != null)
                {
                    e.Graphics.DrawString((String)e.Value, e.CellStyle.Font,
                        Brushes.Crimson, e.CellBounds.X + 2,
                        e.CellBounds.Y + 2, StringFormat.GenericDefault);
                }
                e.Handled = true;
            }
        }
    }
}


Para este ejemplo se necesita:

  • Un control DataGridView denominado dataGridView1 con una columna ContactName como la de la tabla Customers de la base de datos de ejemplo Northwind.

  • Referencias a los ensamblados System, System.Windows.Forms y System.Drawing.

Mostrar:
© 2015 Microsoft