Auf Englisch lesen

Freigeben über


DataGridView.CellFormatting Ereignis

Definition

Tritt auf, wenn die Inhalte einer Zelle für die Anzeige formatiert werden müssen.

public event System.Windows.Forms.DataGridViewCellFormattingEventHandler CellFormatting;
public event System.Windows.Forms.DataGridViewCellFormattingEventHandler? CellFormatting;

Ereignistyp

Beispiele

Das folgende Codebeispiel zeigt, wie das CellFormatting Ereignis behandelt wird.

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;
        }
    }
}

Hinweise

Standardmäßig versucht das Steuerelement, den Wert einer Zelle in ein für die DataGridView Anzeige geeignetes Format zu konvertieren. Beispielsweise konvertiert er einen numerischen Wert in eine Zeichenfolge zur Anzeige in einer Textfeldzelle. Sie können die zu verwendende Formatierungskonvention angeben, indem Sie die Format Eigenschaft der DataGridViewCellStyle von Eigenschaften zurückgegebenen festlegen, z. B. die DefaultCellStyle -Eigenschaft.

Wenn die Standardformatierung nicht ausreicht, können Sie die Formatierung anpassen, indem Sie das CellFormatting Ereignis behandeln. Mit diesem Ereignis können Sie den genauen Anzeigewert sowie die Zellstile wie Hintergrund- und Vordergrundfarbe angeben, die für die Zellenanzeige verwendet werden sollen. Dies bedeutet, dass Sie dieses Ereignis für jede Art von Zellformatierung behandeln können, unabhängig davon, ob der Zellwert selbst formatiert werden muss.

Das CellFormatting Ereignis tritt jedes Mal auf, wenn jede Zelle gezeichnet wird. Daher sollten Sie bei der Behandlung dieses Ereignisses eine langwierige Verarbeitung vermeiden. Dieses Ereignis tritt auch auf, wenn die Zelle FormattedValue abgerufen oder ihre GetFormattedValue Methode aufgerufen wird.

Wenn Sie das CellFormatting Ereignis behandeln, wird die ConvertEventArgs.Value Eigenschaft mit dem Zellwert initialisiert. Wenn Sie eine benutzerdefinierte Konvertierung vom Zellwert in den Anzeigewert bereitstellen, legen Sie die ConvertEventArgs.Value -Eigenschaft auf den konvertierten Wert fest, und stellen Sie sicher, dass der neue Wert vom Typ stammt, der von der Zelleigenschaft FormattedValueType angegeben wird. Um anzugeben, dass keine weitere Wertformatierung erforderlich ist, legen Sie die DataGridViewCellFormattingEventArgs.FormattingApplied -Eigenschaft auf fest true.

Wenn der Ereignishandler abgeschlossen ist, wenn der ConvertEventArgs.Value oder nicht vom richtigen Typ ist null oder nicht vom richtigen Typ ist oder die DataGridViewCellFormattingEventArgs.FormattingApplied Eigenschaft ist false, wird der Value mit den FormatEigenschaften , NullValue, , DataSourceNullValueund FormatProvider der Zellenformat formatiert, die von der DataGridViewCellFormattingEventArgs.CellStyle -Eigenschaft zurückgegeben wird, die mithilfe der cell-Eigenschaft InheritedStyle initialisiert wird.

Unabhängig vom Wert der DataGridViewCellFormattingEventArgs.FormattingApplied -Eigenschaft werden die Anzeigeeigenschaften des von der DataGridViewCellFormattingEventArgs.CellStyle -Eigenschaft zurückgegebenen Objekts verwendet, um die Zelle zu rendern.

Weitere Informationen zur benutzerdefinierten Formatierung mithilfe des Ereignisses CellFormatting finden Sie unter Vorgehensweise: Anpassen der Datenformatierung im Windows Forms DataGridView-Steuerelements.

Um Leistungseinbußen bei der Behandlung dieses Ereignisses zu vermeiden, greifen Sie über die Parameter des Ereignishandlers auf die Zelle zu, anstatt direkt auf die Zelle zuzugreifen.

Um die Konvertierung eines formatierten, vom Benutzer angegebenen Werts in einen tatsächlichen Zellenwert anzupassen, behandeln Sie das CellParsing Ereignis.

Weitere Informationen zum Behandeln von Ereignissen finden Sie unter behandeln und Auslösen von Ereignissen.

Gilt für:

Produkt Versionen
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9, 10

Weitere Informationen