DataGridView.CellParsing Zdarzenie

Definicja

Występuje, gdy komórka opuści tryb edycji, jeśli wartość komórki została zmodyfikowana.Occurs when a cell leaves edit mode if the cell value has been modified.

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 

Typ zdarzenia

DataGridViewCellParsingEventHandler

Przykłady

Poniższy przykład kodu pokazuje, jak obsłużyć CellParsing zdarzenie.The following code example shows how to handle the CellParsing event. Pokazano również, jak używać DataGridViewCellParsingEventArgs klasy.It also shows how to use the DataGridViewCellParsingEventArgs class.

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

Uwagi

Domyślnie formant spróbuje DataGridView skonwertować wartość określoną przez użytkownika wyświetlaną w komórce do rzeczywistej wartości komórki bazowej w typie określonym przez ValueType Właściwość komórki.By default, the DataGridView control will attempt to convert a user-specified value displayed in a cell to an actual underlying cell value in the type specified by the cell ValueType property. Ta konwersja używa właściwości formatowania stylu komórki zwracanego przez InheritedStyle Właściwość komórki.This conversion uses the formatting properties of the cell style returned by the cell InheritedStyle property.

Jeśli standardowa konwersja nie spełnia Twoich potrzeb, należy obsłużyć CellParsing zdarzenie, aby zapewnić niestandardową konwersję wartości do wymaganego typu.If the standard conversion does not meet your needs, handle the CellParsing event to provide custom value conversion to the required type.

Użytkownicy mogą przejść do trybu edycji przy użyciu metody określonej przez EditMode Właściwość i mogą opuścić tryb edycji, zatwierdzać wszelkie zmiany w komórce, przechodząc do innej komórki lub naciskając klawisz ENTER.Users can enter edit mode using the method specified by the EditMode property, and can leave edit mode, committing any changes to a cell, by moving to another cell or by pressing ENTER. Naciśnięcie klawisza ESC spowoduje przywrócenie wszelkich zmian wartości przed zatwierdzeniem, a CellParsing zdarzenie nie zostanie wykonane.Pressing ESC will revert any changes to the value before it is committed, and the CellParsing event will not occur. CellParsingZdarzenie występuje tylko wtedy, gdy wartość komórki została faktycznie zmodyfikowana, nawet jeśli końcowa wartość jest taka sama jak oryginalna wartość.The CellParsing event occurs only if the cell value has actually been modified, even if the final value is the same as the original value. Występuje również, gdy CommitEdit Metoda jest wywoływana.It also occurs when the CommitEdit method is called.

Po obsłudze CellParsing zdarzenia można przekonwertować wartość samodzielnie lub dostosować konwersję domyślną.When you handle the CellParsing event, you can convert the value yourself or you can customize the default conversion. Na przykład możesz przekonwertować wartość samodzielnie za pomocą ParseFormattedValue metody Cell z wybraną przez Ciebie konwerterami typów.For example, you can convert the value yourself using the cell ParseFormattedValue method with type converters of your choosing. Alternatywnie można zezwolić na przeanalizowanie wartości przez domyślne konwertery typów, ale zmodyfikować NullValue , DataSourceNullValue , i FormatProvider właściwości obiektu zwróconego przez DataGridViewCellParsingEventArgs.InheritedCellStyle Właściwość, która jest inicjowana przy użyciu właściwości komórki InheritedStyle .Alternatively, you can let the default type converters parse the value, but modify the NullValue, DataSourceNullValue, and FormatProvider properties of the object returned by the DataGridViewCellParsingEventArgs.InheritedCellStyle property, which is initialized using the cell InheritedStyle property.

Podczas konwersji wartości należy zamienić początkową, sformatowaną wartość ConvertEventArgs.Value właściwości na przekonwertowaną wartość w typie określonym przez ValueType Właściwość komórki.When you convert the value yourself, replace the initial, formatted value of the ConvertEventArgs.Value property with the converted value in the type specified by the cell ValueType property. Aby wskazać, że nie jest konieczne dalsze analizowanie, ustaw DataGridViewCellParsingEventArgs.ParsingApplied Właściwość na true .To indicate that no further parsing is necessary, set the DataGridViewCellParsingEventArgs.ParsingApplied property to true.

Po zakończeniu obsługi zdarzeń, jeśli ConvertEventArgs.Value ma null lub nie jest prawidłowym typem lub DataGridViewCellParsingEventArgs.ParsingApplied Właściwość jest false , Value jest analizowana przy użyciu ParseFormattedValue metody komórki z domyślnymi konwerterami typu.When the event handler completes, if the ConvertEventArgs.Value is null or is not of the correct type, or the DataGridViewCellParsingEventArgs.ParsingApplied property is false, the Value is parsed using the cell ParseFormattedValue method with default type converters. Domyślna implementacja tej metody analizuje wartość przy użyciu NullValue DataSourceNullValue właściwości,, i w FormatProvider przekazaniu stylu komórki.The default implementation of this method parses the value using the NullValue, DataSourceNullValue, and FormatProvider properties of the cell style passed in. Jeśli wartość nie jest równa NullValue , wartość jest analizowana przy użyciu FormatProvider właściwości i przekazano konwertery typów.If the value is not equal to NullValue, the value is parsed using the FormatProvider property and the type converters passed in.

Aby dostosować konwersję wartości komórki do sformatowanej wartości na potrzeby wyświetlania, należy obsłużyć CellFormatting zdarzenie.To customize the conversion of a cell value into a formatted value for display, handle the CellFormatting event.

Aby uzyskać więcej informacji o sposobie obsługi zdarzeń, zobacz Obsługa iwywoływanie zdarzeń.For more information about how to handle events, see Handling and Raising Events.

Dotyczy

Zobacz też