Freigeben über


DataGridView.CellParsing Ereignis

Definition

Tritt ein, wenn eine Zelle den Bearbeitungsmodus verlässt und der Zellwert geändert wurde.

public:
 event System::Windows::Forms::DataGridViewCellParsingEventHandler ^ CellParsing;
public event System.Windows.Forms.DataGridViewCellParsingEventHandler CellParsing;
public event System.Windows.Forms.DataGridViewCellParsingEventHandler? CellParsing;
member this.CellParsing : System.Windows.Forms.DataGridViewCellParsingEventHandler 
Public Custom Event CellParsing As DataGridViewCellParsingEventHandler 

Ereignistyp

Beispiele

Das folgende Codebeispiel zeigt, wie das CellParsing Ereignis behandelt wird. Außerdem wird gezeigt, wie die DataGridViewCellParsingEventArgs -Klasse verwendet wird.

// Handling CellParsing allows one to accept user input, then map it to a different
// internal representation.
void dataGridView1_CellParsing( Object^ /*sender*/, DataGridViewCellParsingEventArgs^ e )
{
   if ( this->dataGridView1->Columns[ e->ColumnIndex ]->Name->Equals( "Release Date" ) )
   {
      if ( e != nullptr )
      {
         if ( e->Value != nullptr )
         {
            try
            {
               // Map what the user typed into UTC.
               e->Value = DateTime::Parse( e->Value->ToString() ).ToUniversalTime();

               // Set the ParsingApplied property to 
               // Show the event is handled.
               e->ParsingApplied = true;
            }
            catch ( FormatException^ /*ex*/ ) 
            {
               // Set to false in case another CellParsing handler
               // wants to try to parse this DataGridViewCellParsingEventArgs instance.
               e->ParsingApplied = false;
            }
         }
      }
   }
}
// Handling CellParsing allows one to accept user input, then map it to a different
// internal representation.
private void dataGridView1_CellParsing(object sender, DataGridViewCellParsingEventArgs e)
{
    if (this.dataGridView1.Columns[e.ColumnIndex].Name == "Release Date")
    {
        if (e != null)
        {
            if (e.Value != null)
            {
                try
                {
                    // Map what the user typed into UTC.
                    e.Value = DateTime.Parse(e.Value.ToString()).ToUniversalTime();
                    // Set the ParsingApplied property to 
                    // Show the event is handled.
                    e.ParsingApplied = true;
                }
                catch (FormatException)
                {
                    // Set to false in case another CellParsing handler
                    // wants to try to parse this DataGridViewCellParsingEventArgs instance.
                    e.ParsingApplied = false;
                }
            }
        }
    }
}
' Handling CellParsing allows one to accept user input, then map it to a different
' internal representation.
Private Sub dataGridView1_CellParsing(ByVal sender As Object, _
    ByVal e As DataGridViewCellParsingEventArgs) _
    Handles dataGridView1.CellParsing

    If Me.dataGridView1.Columns(e.ColumnIndex).Name = _
        "Release Date" Then
        If e IsNot Nothing Then
            If e.Value IsNot Nothing Then
                Try
                    ' Map what the user typed into UTC.
                    e.Value = _
                    DateTime.Parse(e.Value.ToString()).ToUniversalTime()
                    ' Set the ParsingApplied property to 
                    ' Show the event is handled.
                    e.ParsingApplied = True

                Catch ex As FormatException
                    ' Set to false in case another CellParsing handler
                    ' wants to try to parse this DataGridViewCellParsingEventArgs instance.
                    e.ParsingApplied = False
                End Try
            End If
        End If
    End If
End Sub

Hinweise

Standardmäßig versucht das Steuerelement, einen benutzerdefinierten Wert, der DataGridView in einer Zelle angezeigt wird, in einen tatsächlich zugrunde liegenden Zellwert in den von der Zelleigenschaft ValueType angegebenen Typ zu konvertieren. Bei dieser Konvertierung werden die Formatierungseigenschaften des von der Zelleigenschaft InheritedStyle zurückgegebenen Zellformats verwendet.

Wenn die Standardkonvertierung Nicht Ihren Anforderungen entspricht, behandeln Sie das Ereignis, um eine CellParsing benutzerdefinierte Wertkonvertierung in den erforderlichen Typ bereitzustellen.

Benutzer können mit der von der -Eigenschaft angegebenen Methode in den EditMode Bearbeitungsmodus wechseln und den Bearbeitungsmodus verlassen und alle Änderungen an einer Zelle festlegen, indem sie in eine andere Zelle wechseln oder die EINGABETASTE drücken. Durch Drücken von ESC werden alle Änderungen am Wert rückgängig machen, bevor ein Commit durchgeführt wird, und das CellParsing Ereignis tritt nicht auf. Das CellParsing Ereignis tritt nur auf, wenn der Zellwert tatsächlich geändert wurde, auch wenn der endgültige Wert mit dem ursprünglichen Wert identisch ist. Es tritt auch auf, wenn die CommitEdit -Methode aufgerufen wird.

Wenn Sie das CellParsing Ereignis behandeln, können Sie den Wert selbst konvertieren oder die Standardkonvertierung anpassen. Beispielsweise können Sie den Wert selbst mit der Zellmethode ParseFormattedValue mit Typkonvertern Ihrer Wahl konvertieren. Alternativ können Sie den Wert von den Standardtypkonvertern analysieren lassen, aber die NullValueEigenschaften , DataSourceNullValueund FormatProvider des Von der DataGridViewCellParsingEventArgs.InheritedCellStyle -Eigenschaft zurückgegebenen Objekts ändern, das mithilfe der Zelleigenschaft InheritedStyle initialisiert wird.

Wenn Sie den Wert selbst konvertieren, ersetzen Sie den anfänglichen, formatierten Wert der ConvertEventArgs.Value Eigenschaft durch den konvertierten Wert des typs, der durch die Zelleigenschaft ValueType angegeben wird. Um anzugeben, dass keine weitere Analyse erforderlich ist, legen Sie die DataGridViewCellParsingEventArgs.ParsingApplied -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 DataGridViewCellParsingEventArgs.ParsingApplied Eigenschaft ist false, wird der Value mit der Zellmethode ParseFormattedValue mit Standardtypkonvertern analysiert. Die Standardimplementierung dieser Methode analysiert den Wert mithilfe der NullValueEigenschaften , DataSourceNullValueund FormatProvider des übergebenen Zellformats. Wenn der Wert nicht gleich NullValueist, wird der Wert mit der -Eigenschaft und den FormatProvider übergebenen Typkonvertern analysiert.

Um die Konvertierung eines Zellwerts in einen formatierten Wert für die Anzeige anzupassen, behandeln Sie das CellFormatting Ereignis.

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

Gilt für:

Weitere Informationen