DataGridView.CellParsing Evento

Definición

Se produce cuando una celda cuyo valor ha sido modificado deja de estar en modo de edición.

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 de evento

Ejemplos

En el ejemplo de código siguiente se muestra cómo controlar el CellParsing evento. También muestra cómo usar la DataGridViewCellParsingEventArgs clase .

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

Comentarios

De forma predeterminada, el DataGridView control intentará convertir un valor especificado por el usuario mostrado en una celda en un valor de celda subyacente real en el tipo especificado por la propiedad cell ValueType . Esta conversión usa las propiedades de formato del estilo de celda devuelto por la propiedad cell InheritedStyle .

Si la conversión estándar no satisface sus necesidades, controle el CellParsing evento para proporcionar la conversión de valor personalizada al tipo necesario.

Los usuarios pueden entrar en modo de edición mediante el método especificado por la EditMode propiedad y pueden dejar el modo de edición, confirmar cualquier cambio en una celda, pasando a otra celda o presionando ENTRAR. Al presionar ESC, se revertirán los cambios en el valor antes de confirmarlo y el CellParsing evento no se producirá. El CellParsing evento solo se produce si el valor de celda se ha modificado realmente, incluso si el valor final es el mismo que el valor original. También se produce cuando se llama al CommitEdit método .

Al controlar el CellParsing evento, puede convertir el valor usted mismo o personalizar la conversión predeterminada. Por ejemplo, puede convertir el valor usted mismo mediante el método de celda ParseFormattedValue con convertidores de tipos de su elección. Como alternativa, puede permitir que los convertidores de tipos predeterminados analicen el valor, pero modifiquen las NullValuepropiedades , DataSourceNullValuey FormatProvider del objeto devuelto por la DataGridViewCellParsingEventArgs.InheritedCellStyle propiedad , que se inicializa mediante la propiedad cell InheritedStyle .

Al convertir el valor usted mismo, reemplace el valor inicial con formato de la ConvertEventArgs.Value propiedad por el valor convertido en el tipo especificado por la propiedad cell ValueType . Para indicar que no es necesario analizar más, establezca la DataGridViewCellParsingEventArgs.ParsingApplied propiedad trueen .

Cuando se completa el controlador de eventos, si ConvertEventArgs.Value es null o no es del tipo correcto, o la DataGridViewCellParsingEventArgs.ParsingApplied propiedad es false, Value se analiza mediante el método de celda ParseFormattedValue con convertidores de tipos predeterminados. La implementación predeterminada de este método analiza el valor mediante las NullValuepropiedades , DataSourceNullValuey FormatProvider del estilo de celda pasado. Si el valor no es igual a NullValue, el valor se analiza mediante la FormatProvider propiedad y los convertidores de tipos pasados.

Para personalizar la conversión de un valor de celda en un valor con formato para mostrar, controle el CellFormatting evento.

Para obtener más información acerca de cómo controlar eventos, vea controlar y provocar eventos.

Se aplica a

Consulte también