Freigeben über


DataGridViewCellFormattingEventArgs Klasse

Definition

Stellt Daten für das CellFormatting Ereignis eines .DataGridView

public ref class DataGridViewCellFormattingEventArgs : System::Windows::Forms::ConvertEventArgs
public class DataGridViewCellFormattingEventArgs : System.Windows.Forms.ConvertEventArgs
type DataGridViewCellFormattingEventArgs = class
    inherit ConvertEventArgs
Public Class DataGridViewCellFormattingEventArgs
Inherits ConvertEventArgs
Vererbung
DataGridViewCellFormattingEventArgs

Beispiele

Das folgende Codebeispiel veranschaulicht, wie sie behandelt CellFormattingwerden.

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 die Darstellung einer Zelle je nach 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 langwierige Verarbeitung vermeiden. 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 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 ist, der von der Zelleigenschaft FormattedValueType angegeben wird. Um anzugeben, dass keine weitere Wertformatierung erforderlich ist, legen Sie die DataGridViewCellFormattingEventArgs.FormattingApplied Eigenschaft auf true.

Wenn der Ereignishandler abgeschlossen ist oder ConvertEventArgs.Valuenull nicht der richtige Typ ist oder die DataGridViewCellFormattingEventArgs.FormattingApplied Eigenschaft istfalse, wird dies Value mithilfe Formatder von der Eigenschaft zurückgegebenen , NullValueDataSourceNullValueund FormatProvider Eigenschaften der von der DataGridViewCellFormattingEventArgs.CellStyle Eigenschaft zurückgegebenen Zellenformatvorlage formatiert, die mithilfe der Zelleigenschaft InheritedStyle initialisiert wird.

Unabhängig vom Wert der DataGridViewCellFormattingEventArgs.FormattingApplied Eigenschaft werden die Anzeigeeigenschaften des objekts, das von der DataGridViewCellFormattingEventArgs.CellStyle Eigenschaft zurückgegeben wird, zum Rendern der Zelle verwendet.

Weitere Informationen zur benutzerdefinierten Formatierung mithilfe des CellFormatting Ereignisses finden Sie unter How to: Customize Data Formatting in the Windows Forms DataGridView Control.

Um Leistungsstrafen beim Behandeln 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.

Konstruktoren

Name Beschreibung
DataGridViewCellFormattingEventArgs(Int32, Int32, Object, Type, DataGridViewCellStyle)

Initialisiert eine neue Instanz der DataGridViewCellFormattingEventArgs-Klasse.

Eigenschaften

Name Beschreibung
CellStyle

Ruft die Formatvorlage der zelle ab, die formatiert wird, oder legt diese fest.

ColumnIndex

Ruft den Spaltenindex der Zelle ab, die formatiert wird.

DesiredType

Ruft den Datentyp des gewünschten Werts ab.

(Geerbt von ConvertEventArgs)
FormattingApplied

Dient zum Abrufen oder Festlegen eines Werts, der angibt, ob der Zellwert erfolgreich formatiert wurde.

RowIndex

Ruft den Zeilenindex der Zelle ab, die formatiert wird.

Value

Dient zum Abrufen oder Festlegen des Werts der ConvertEventArgs.

(Geerbt von ConvertEventArgs)

Methoden

Name Beschreibung
Equals(Object)

Bestimmt, ob das angegebene Objekt dem aktuellen Objekt entspricht.

(Geerbt von Object)
GetHashCode()

Dient als Standardhashfunktion.

(Geerbt von Object)
GetType()

Ruft die Type der aktuellen Instanz ab.

(Geerbt von Object)
MemberwiseClone()

Erstellt eine flache Kopie der aktuellen Object.

(Geerbt von Object)
ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)

Gilt für:

Weitere Informationen