Condividi tramite


DataGridView.CellParsing Evento

Definizione

Si verifica quando una cella esce dalla modalità di modifica e il valore della cella è stato modificato.

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 

Tipo evento

Esempio

Nell'esempio di codice seguente viene illustrato come gestire l'evento CellParsing . Illustra anche come usare la DataGridViewCellParsingEventArgs classe .

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

Commenti

Per impostazione predefinita, il DataGridView controllo tenterà di convertire un valore specificato dall'utente visualizzato in una cella in un valore di cella sottostante effettivo nel tipo specificato dalla proprietà della cella ValueType . Questa conversione utilizza le proprietà di formattazione dello stile di cella restituito dalla proprietà della cella InheritedStyle .

Se la conversione standard non soddisfa le proprie esigenze, gestire l'evento CellParsing per fornire la conversione di valori personalizzati nel tipo richiesto.

Gli utenti possono accedere alla modalità di modifica usando il metodo specificato dalla EditMode proprietà e possono lasciare la modalità di modifica, eseguendo il commit delle modifiche apportate a una cella, spostandosi in un'altra cella o premendo INVIO. Se si preme ESC, verranno ripristinate le modifiche apportate al valore prima che venga eseguito il commit e l'evento CellParsing non si verificherà. L'evento CellParsing si verifica solo se il valore della cella è stato effettivamente modificato, anche se il valore finale corrisponde al valore originale. Si verifica anche quando viene chiamato il CommitEdit metodo .

Quando si gestisce l'evento CellParsing , è possibile convertire manualmente il valore oppure personalizzare la conversione predefinita. Ad esempio, è possibile convertire manualmente il valore usando il metodo cell ParseFormattedValue con convertitori di tipi di propria scelta. In alternativa, è possibile consentire ai convertitori di tipi predefiniti di analizzare il valore, ma modificare le NullValueproprietà , DataSourceNullValuee FormatProvider dell'oggetto restituito dalla DataGridViewCellParsingEventArgs.InheritedCellStyle proprietà , inizializzata usando la proprietà cell InheritedStyle .

Quando si converte manualmente il valore, sostituire il valore iniziale formattato della ConvertEventArgs.Value proprietà con il valore convertito nel tipo specificato dalla proprietà cell ValueType . Per indicare che non è necessaria ulteriore analisi, impostare la DataGridViewCellParsingEventArgs.ParsingApplied proprietà su true.

Al termine del gestore eventi, se ConvertEventArgs.Value è null o non è del tipo corretto oppure la DataGridViewCellParsingEventArgs.ParsingApplied proprietà è false, l'oggetto Value viene analizzato usando il metodo cella ParseFormattedValue con convertitori di tipi predefiniti. L'implementazione predefinita di questo metodo analizza il valore usando le NullValueproprietà , DataSourceNullValuee FormatProvider dello stile di cella passato. Se il valore non è uguale a NullValue, il valore viene analizzato usando la FormatProvider proprietà e i convertitori di tipi passati.

Per personalizzare la conversione di un valore di cella in un valore formattato per la visualizzazione, gestire l'evento CellFormatting .

Per altre informazioni su come gestire gli eventi, vedere la gestione e generazione di eventi.

Si applica a

Vedi anche