DataGridViewCellFormattingEventHandler Delegat

Definition

Stellt die Methode zur Behandlung des CellFormatting-Ereignisses eines DataGridView-Objekts dar.

public delegate void DataGridViewCellFormattingEventHandler(System::Object ^ sender, DataGridViewCellFormattingEventArgs ^ e);
public delegate void DataGridViewCellFormattingEventHandler(object sender, DataGridViewCellFormattingEventArgs e);
public delegate void DataGridViewCellFormattingEventHandler(object? sender, DataGridViewCellFormattingEventArgs e);
type DataGridViewCellFormattingEventHandler = delegate of obj * DataGridViewCellFormattingEventArgs -> unit
Public Delegate Sub DataGridViewCellFormattingEventHandler(sender As Object, e As DataGridViewCellFormattingEventArgs)

Parameter

sender
Object

Die Quelle des Ereignisses.

Beispiele

Das folgende Codebeispiel veranschaulicht die Behandlung des CellFormatting-Ereignisses.

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

Behandeln Sie das CellFormatting -Ereignis, um die Konvertierung eines Zellwerts in ein format anzupassen, das für die Anzeige geeignet ist, oder um das Erscheinungsbild einer Zelle abhängig von ihrem Zustand oder Wert anzupassen.

Das CellFormatting Ereignis tritt jedes Mal auf, wenn jede Zelle gezeichnet wird. Daher sollten Sie bei der Behandlung dieses Ereignisses eine lange 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 den von der Cell-Eigenschaft FormattedValueType angegebenen Typ aufweist. Um anzugeben, dass keine weitere Wertformatierung erforderlich ist, legen Sie die DataGridViewCellFormattingEventArgs.FormattingApplied -Eigenschaft auf fest true.

Wenn der -Ereignishandler abgeschlossen ist oder ConvertEventArgs.Value nicht vom richtigen Typ ist null oder die DataGridViewCellFormattingEventArgs.FormattingApplied -Eigenschaft ist false, wird der Value mit den FormatEigenschaften , NullValue, DataSourceNullValueund FormatProvider der von der DataGridViewCellFormattingEventArgs.CellStyle -Eigenschaft zurückgegebenen Zellenformat formatiert, die mit 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-Steuerelement.

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 Zellwert anzupassen, behandeln Sie das CellParsing -Ereignis.

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

Beim Erstellen eines DataGridViewCellFormattingEventHandler-Delegaten bestimmen Sie die Methode für die Ereignisbehandlung. Um dem Ereignishandler das Ereignis zuzuordnen, fügen Sie dem Ereignis eine Instanz des Delegaten hinzu. Der Ereignishandler wird bei jedem Eintreten des Ereignisses aufgerufen, sofern der Delegat nicht entfernt wird. Weitere Informationen zu Ereignishandlerdelegaten finden Sie unter Behandeln und Auslösen von Ereignissen.

Erweiterungsmethoden

GetMethodInfo(Delegate)

Ruft ein Objekt ab, das die Methode darstellt, die vom angegebenen Delegaten dargestellt wird.

Gilt für:

Weitere Informationen