DataGridView.CellFormatting Ereignis
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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;
member this.CellFormatting : System.Windows.Forms.DataGridViewCellFormattingEventHandler
Public Custom Event CellFormatting As DataGridViewCellFormattingEventHandler
Ereignistyp
Beispiele
Im folgenden Codebeispiel wird gezeigt, wie das CellFormatting Ereignis behandelt wird.
void dataGridView1_CellFormatting( Object^ /*sender*/, DataGridViewCellFormattingEventArgs^ e )
{
// If the column is the Artist column, check the
// value.
if ( this->dataGridView1->Columns[ e->ColumnIndex ]->Name->Equals( "Artist" ) )
{
if ( e->Value != nullptr )
{
// Check for the string "pink" in the cell.
String^ stringValue = dynamic_cast<String^>(e->Value);
stringValue = stringValue->ToLower();
if ( (stringValue->IndexOf( "pink" ) > -1) )
{
DataGridViewCellStyle^ pinkStyle = gcnew DataGridViewCellStyle;
//Change the style of the cell.
pinkStyle->BackColor = Color::Pink;
pinkStyle->ForeColor = Color::Black;
pinkStyle->Font = gcnew System::Drawing::Font( "Times New Roman",8,FontStyle::Bold );
e->CellStyle = pinkStyle;
}
}
}
else
if ( this->dataGridView1->Columns[ e->ColumnIndex ]->Name->Equals( "Release Date" ) )
{
ShortFormDateFormat( e );
}
}
//Even though the date internaly stores the year as YYYY, using formatting, the
//UI can have the format in YY.
void ShortFormDateFormat( DataGridViewCellFormattingEventArgs^ formatting )
{
if ( formatting->Value != nullptr )
{
try
{
System::Text::StringBuilder^ dateString = gcnew 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 ( Exception^ /*notInDateFormat*/ )
{
// Set to false in case there are other handlers interested trying to
// format this DataGridViewCellFormattingEventArgs instance.
formatting->FormattingApplied = false;
}
}
}
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;
}
}
}
Private Sub dataGridView1_CellFormatting(ByVal sender As Object, _
ByVal e As DataGridViewCellFormattingEventArgs) _
Handles dataGridView1.CellFormatting
' If the column is the Artist column, check the
' value.
If Me.dataGridView1.Columns(e.ColumnIndex).Name _
= "Artist" Then
If e.Value IsNot Nothing Then
' Check for the string "pink" in the cell.
Dim stringValue As String = _
CType(e.Value, String)
stringValue = stringValue.ToLower()
If ((stringValue.IndexOf("pink") > -1)) Then
e.CellStyle.BackColor = Color.Pink
End If
End If
ElseIf Me.dataGridView1.Columns(e.ColumnIndex).Name _
= "Release Date" Then
ShortFormDateFormat(e)
End If
End Sub
'Even though the date internaly stores the year as YYYY, using formatting, the
'UI can have the format in YY.
Private Shared Sub ShortFormDateFormat(ByVal formatting As DataGridViewCellFormattingEventArgs)
If formatting.Value IsNot Nothing Then
Try
Dim dateString As System.Text.StringBuilder = New System.Text.StringBuilder()
Dim theDate As Date = 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 notInDateFormat As FormatException
' Set to false in case there are other handlers interested trying to
' format this DataGridViewCellFormattingEventArgs instance.
formatting.FormattingApplied = False
End Try
End If
End Sub
Hinweise
Standardmäßig versucht das DataGridView Steuerelement, den Wert einer Zelle in ein Format zu konvertieren, das für die Anzeige geeignet ist. Sie konvertiert z. B. einen numerischen Wert in eine Zeichenfolge für die Anzeige in einer Textfeldzelle. Sie können die Formatierungskonvention angeben, die verwendet werden soll, indem Sie die Format Eigenschaft der DataGridViewCellStyle zurückgegebenen Eigenschaften wie die DefaultCellStyle Eigenschaft festlegen.
Wenn die Standardformatierung nicht ausreichend ist, können Sie die Formatierung anpassen, indem Sie das CellFormatting Ereignis behandeln. Mit diesem Ereignis können Sie den genauen Anzeigewert sowie die Zellformatvorlagen angeben, z. B. Hintergrund- und Vordergrundfarbe, um für die Zellanzeige zu verwenden. Dies bedeutet, dass Sie dieses Ereignis für jede Art von Zellformatierung behandeln können, unabhängig davon, ob der Zellwert selbst Formatierung benötigt.
Das CellFormatting Ereignis tritt jedes Mal auf, wenn jede Zelle gezeichnet wird, sodass Sie bei der Behandlung dieses Ereignisses eine lange Verarbeitung vermeiden sollten. Dieses Ereignis tritt auch auf, wenn die Zelle FormattedValue abgerufen wird oder die GetFormattedValue Methode aufgerufen wird.
Wenn Sie das CellFormatting Ereignis behandeln, wird die ConvertEventArgs.Value Eigenschaft mit dem Zellwert initialisiert. Wenn Sie benutzerdefinierte Konvertierung von dem Zellwert in den Anzeigewert bereitstellen, legen Sie die ConvertEventArgs.Value Eigenschaft auf den konvertierten Wert fest, und stellen Sie sicher, dass der neue Wert der vom Zelleigenschaft FormattedValueType angegebenen Typ ist. Um anzugeben, dass keine weitere Wertformatierung erforderlich ist, legen Sie die DataGridViewCellFormattingEventArgs.FormattingApplied Eigenschaft auf true
.
Wenn der Ereignishandler abgeschlossen ist, wenn dies ConvertEventArgs.Value null
der richtige Typ ist oder nicht der richtige Typ DataGridViewCellFormattingEventArgs.FormattingApplied ist, oder FormatProvider die Eigenschaft ist, wird dies Value mithilfe der von der DataGridViewCellFormattingEventArgs.CellStyle Eigenschaft zurückgegebenen Zellformatvorlagen formatiert, die mithilfe DataSourceNullValueFormatNullValueder Zelleigenschaft false
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 CellFormatting Ereignisses finden Sie unter How to: Anpassen der Datenformatierung im Windows Forms DataGridView-Steuerelement.
Um Leistungsstrafen beim Behandeln dieses Ereignisses zu vermeiden, greifen Sie auf die Zelle über die Parameter des Ereignishandlers zu, anstatt direkt auf die Zelle zuzugreifen.
Um die Konvertierung eines formatierten, vom Benutzer angegebenen Werts in einen tatsächlichen Zellwert anzupassen, behandeln Sie das CellParsing Ereignis.
Weitere Informationen zum Behandeln von Ereignissen finden Sie unter behandeln und Auslösen von Ereignissen.
Gilt für
Siehe auch
- DefaultCellStyle
- DataGridViewCellStyle
- Format
- FormatProvider
- NullValue
- DataSourceNullValue
- InheritedStyle
- Value
- FormattedValue
- FormattedValueType
- GetFormattedValue(Object, Int32, DataGridViewCellStyle, TypeConverter, TypeConverter, DataGridViewDataErrorContexts)
- DataGridViewCellFormattingEventHandler
- DataGridViewCellFormattingEventArgs
- FormattingApplied
- CellStyle
- Value
- OnCellFormatting(DataGridViewCellFormattingEventArgs)
- CellParsing
- Zellstile im DataGridView-Steuerelement in Windows Forms
- Gewusst wie: Anpassen der Datenformatierung im DataGridView-Steuerelement in Windows Forms
- DataGridView-Steuerelement (Windows Forms)