Esta documentación está archivada y no tiene mantenimiento.

DataGridView.CellFormatting (Evento)

Se produce cuando hay que aplicar formato al contenido de una celda para su presentación.

Espacio de nombres: System.Windows.Forms
Ensamblado: System.Windows.Forms (en system.windows.forms.dll)

public event DataGridViewCellFormattingEventHandler CellFormatting
/** @event */
public void add_CellFormatting (DataGridViewCellFormattingEventHandler value)

/** @event */
public void remove_CellFormatting (DataGridViewCellFormattingEventHandler value)

En JScript, se pueden controlar los eventos que define una clase, pero no se pueden definir unos propios.
No aplicable.

De manera predeterminada, el control DataGridView intentará convertir el valor de una celda a un formato conveniente para la presentación. Por ejemplo, convertirá un valor numérico en una cadena para presentarlo en una celda de un cuadro de texto. Puede indicar la convención de formato que se debe utilizar mediante la propiedad Format del objeto DataGridViewCellStyle devuelto por propiedades como DefaultCellStyle.

Si el formato estándar es insuficiente, puede personalizar el formato controlando el evento CellFormatting. Este evento le permite indicar el valor de presentación exacto y los estilos de celda, como los colores de fondo y de primer plano, que se deben utilizar para la presentación de una celda. Esto significa que puede controlar este evento para cualquier tipo de formato de celda, independientemente de si el valor de la celda necesita formato.

El evento CellFormatting se produce cada vez que se dibuja cada celda, por lo que se debe evitar un procesamiento prolongado al controlar este evento. Este evento también se produce cuando se recupera el valor de la celda FormattedValue o se llama a su método GetFormattedValue.

Al controlar el evento CellFormatting se inicializa la propiedad ConvertEventArgs.Value con el valor de la celda. Si proporciona conversión personalizada del valor de celda al valor de presentación, establezca como valor de la propiedad ConvertEventArgs.Value el valor convertido para asegurarse de que el nuevo valor es del tipo especificado por la propiedad FormattedValueType de la celda. Para indicar que no es necesario seguir aplicando formato a valores, establezca la propiedad DataGridViewCellFormattingEventArgs.FormattingApplied en true.

Cuando el controlador de eventos finaliza, si el valor de ConvertEventArgs.Value es referencia null (Nothing en Visual Basic) o no es del tipo correcto, o la propiedad DataGridViewCellFormattingEventArgs.FormattingApplied es false, se aplica formato al valor Value mediante las propiedades Format, NullValue, DataSourceNullValue y FormatProvider del estilo de celda devuelto por la propiedad DataGridViewCellFormattingEventArgs.CellStyle, que se inicializa con la propiedad InheritedStyle de la celda.

Independientemente del valor que tenga la propiedad DataGridViewCellFormattingEventArgs.FormattingApplied, las propiedades de presentación del objeto devueltas por la propiedad DataGridViewCellFormattingEventArgs.CellStyle se utilizarán para representar la celda.

Para obtener más información sobre el formato personalizado con el evento CellFormatting, vea Cómo: Personalizar el formato de los datos en el control DataGridView de formularios Windows Forms.

Para evitar la reducción de rendimiento al controlar este evento no debe tener acceso a la celda directamente, sino usar los parámetros del controlador de eventos.

Para personalizar la conversión de un valor con formato especificado por el usuario en un valor de celda real, controle el evento CellParsing.

Para obtener más información sobre el control de eventos, vea Utilizar eventos.

En el ejemplo de código siguiente se muestra cómo controlar el evento CellFormatting.

private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
    // If the column is the Artist column, check the
    // value.
    if (this.dataGridView1.Columns[e.ColumnIndex].Name == "Artist")
    {
        if (e.Value != null)
        {
            // Check for the string "pink" in the cell.
            string stringValue = (string)e.Value;
            stringValue = stringValue.ToLower();
            if ((stringValue.IndexOf("pink") > -1))
            {
                e.CellStyle.BackColor = Color.Pink;
            }

        }
    }
    else if (this.dataGridView1.Columns[e.ColumnIndex].Name == "Release Date")
    {
        ShortFormDateFormat(e);
    }
}

//Even though the date internaly stores the year as YYYY, using formatting, the
//UI can have the format in YY.  
private static void ShortFormDateFormat(DataGridViewCellFormattingEventArgs formatting)
{
    if (formatting.Value != null)
    {
        try
        {
            System.Text.StringBuilder dateString = new System.Text.StringBuilder();
            DateTime theDate = DateTime.Parse(formatting.Value.ToString());

            dateString.Append(theDate.Month);
            dateString.Append("/");
            dateString.Append(theDate.Day);
            dateString.Append("/");
            dateString.Append(theDate.Year.ToString().Substring(2));
            formatting.Value = dateString.ToString();
            formatting.FormattingApplied = true;
        }
        catch (FormatException)
        {
            // Set to false in case there are other handlers interested trying to
            // format this DataGridViewCellFormattingEventArgs instance.
            formatting.FormattingApplied = false;
        }
    }
}

Windows 98, Windows 2000 Service Pack 4, Windows Millennium, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter

Microsoft .NET Framework 3.0 es compatible con Windows Vista, Microsoft Windows XP SP2 y Windows Server 2003 SP1.

.NET Framework

Compatible con: 3.0, 2.0

Mostrar: