DataGridView.CellParsing Událost

Definice

Nastane, když buňka opustí režim úprav, pokud byla změněna hodnota buňky.

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 

Event Type

Příklady

Následující příklad kódu ukazuje, jak zpracovat CellParsing událost. Také ukazuje, jak používat DataGridViewCellParsingEventArgs třídu.

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

Poznámky

Ve výchozím nastavení DataGridView se ovládací prvek pokusí převést uživatelem zadanou hodnotu zobrazenou v buňce na skutečnou základní hodnotu buňky typu určeného vlastností buňky ValueType . Tento převod používá vlastnosti formátování stylu buňky vrácené vlastností buňky InheritedStyle .

Pokud standardní převod nevyhovuje vašim potřebám, zpracujte CellParsing událost a poskytněte vlastní převod hodnoty na požadovaný typ.

Uživatelé můžou přejít do režimu úprav pomocí metody určené EditMode vlastností a můžou opustit režim úprav a po potvrzení všech změn v buňce přejít na jinou buňku nebo stisknutím klávesy ENTER. Stisknutím klávesy ESC se vrátí všechny změny hodnoty před jejím potvrzením CellParsing a k události nedojde. Událost CellParsing nastane pouze v případě, že hodnota buňky byla skutečně změněna, i když je konečná hodnota stejná jako původní hodnota. Dochází k tomu také při zavolání CommitEdit metody.

Při zpracování CellParsing události můžete hodnotu převést sami nebo můžete přizpůsobit výchozí převod. Hodnotu můžete například převést sami pomocí metody buňky ParseFormattedValue s převaděči typů podle vašeho výběru. Alternativně můžete nechat výchozí převaděče typů parsovat hodnotu, ale upravit NullValueDataSourceNullValue, a FormatProvider vlastnosti objektu vráceného DataGridViewCellParsingEventArgs.InheritedCellStyle vlastností, která je inicializována pomocí vlastnosti buňkyInheritedStyle.

Při převodu hodnoty sami nahraďte počáteční formátovanou hodnotu ConvertEventArgs.Value vlastnosti převedenou hodnotou v typu určeném vlastností buňky ValueType . Pokud chcete označit, že není nutná žádná další analýza, nastavte DataGridViewCellParsingEventArgs.ParsingApplied vlastnost na true.

Po dokončení obslužné rutiny události, pokud ConvertEventArgs.Value je null nebo není správného typu, nebo DataGridViewCellParsingEventArgs.ParsingApplied vlastnost je false, Value se analyzuje pomocí metody buňky ParseFormattedValue s výchozími převaděči typů. Výchozí implementace této metody parsuje hodnotu pomocí NullValueDataSourceNullValue, a FormatProvider vlastností předaného stylu buňky. Pokud se hodnota nerovná hodnotě NullValue, hodnota se analyzuje pomocí FormatProvider vlastnosti a předaných převaděčů typů.

Pokud chcete přizpůsobit převod hodnoty buňky na formátovanou hodnotu pro zobrazení, zpracujte CellFormatting událost.

Další informace o zpracování událostí najdete v tématu Zpracování a vyvolávání událostí.

Platí pro

Viz také