DataGridView.CellParsing Händelse

Definition

Inträffar när en cell lämnar redigeringsläget om cellvärdet har ändrats.

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 

Händelsetyp

Exempel

I följande kodexempel visas hur du hanterar händelsen CellParsing . Den visar också hur du DataGridViewCellParsingEventArgs använder klassen.

// 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

Kommentarer

Som standard DataGridView försöker kontrollen konvertera ett användardefinierat värde som visas i en cell till ett faktiskt underliggande cellvärde i den typ som anges av cellegenskapen ValueType . Den här konverteringen använder formateringsegenskaperna för cellformatet som returneras av cellegenskapen InheritedStyle .

Om standardkonverteringen inte uppfyller dina behov hanterar du CellParsing händelsen för att tillhandahålla anpassad värdekonvertering till den typ som krävs.

Användare kan ange redigeringsläge med den metod som anges av EditMode egenskapen och kan lämna redigeringsläget, utföra ändringar i en cell, flytta till en annan cell eller genom att trycka på RETUR. Om du trycker på ESC återställs alla ändringar av värdet innan det checkas in och händelsen CellParsing inträffar inte. Händelsen CellParsing inträffar endast om cellvärdet faktiskt har ändrats, även om det slutliga värdet är detsamma som det ursprungliga värdet. Det inträffar också när CommitEdit metoden anropas.

När du hanterar händelsen CellParsing kan du konvertera värdet själv eller anpassa standardkonverteringen. Du kan till exempel konvertera värdet själv med cellmetoden ParseFormattedValue med valfria typkonverterare. Du kan också låta standardtypkonverterarna parsa värdet, men ändra egenskaperna , NullValueoch för DataSourceNullValue objektet som returneras av FormatProvider egenskapen, som initieras med cellegenskapenDataGridViewCellParsingEventArgs.InheritedCellStyle.InheritedStyle

När du konverterar värdet själv ersätter du det inledande, formaterade värdet för ConvertEventArgs.Value egenskapen med det konverterade värdet i den typ som anges av cellegenskapen ValueType . Om du vill ange att ingen ytterligare parsning krävs anger du egenskapen DataGridViewCellParsingEventArgs.ParsingApplied till true.

När händelsehanteraren är klar, om ConvertEventArgs.Value är null eller inte är av rätt typ, eller DataGridViewCellParsingEventArgs.ParsingApplied om egenskapen är false, Value parsas med cellmetoden ParseFormattedValue med standardtypkonverterare. Standardimplementeringen av den här metoden parsar värdet med egenskaperna NullValue, DataSourceNullValueoch för FormatProvider cellformatet som skickades in. Om värdet inte är lika med NullValueparsas värdet med egenskapen FormatProvider och typkonverterarna skickas in.

Om du vill anpassa konverteringen av ett cellvärde till ett formaterat värde för visning hanterar du CellFormatting händelsen.

Mer information om hur du hanterar händelser finns i Hantera och höja händelser.

Gäller för

Se även