Partilhar via


DataGridView.CellParsing Evento

Definição

Ocorre quando uma célula sai do modo de edição se o valor da célula tiver sido modificado.

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

Exemplos

O exemplo de código a seguir mostra como lidar com o CellParsing evento. Ele também mostra como usar a 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

Comentários

Por padrão, o DataGridView controle tentará converter um valor especificado pelo usuário exibido em uma célula em um valor de célula subjacente real no tipo especificado pela propriedade da célula ValueType . Essa conversão usa as propriedades de formatação do estilo de célula retornado pela propriedade da célula InheritedStyle .

Se a conversão padrão não atender às suas necessidades, manipule o CellParsing evento para fornecer conversão de valor personalizado para o tipo necessário.

Os usuários podem entrar no modo de edição usando o método especificado pela propriedade e podem sair do EditMode modo de edição, confirmando quaisquer alterações em uma célula, movendo-se para outra célula ou pressionando ENTER. Pressionar o ESC reverter quaisquer alterações no valor antes de ser confirmado e o CellParsing evento não ocorrerá. O CellParsing evento ocorrerá somente se o valor da célula tiver sido realmente modificado, mesmo que o valor final seja o mesmo que o valor original. Também ocorre quando o CommitEdit método é chamado.

Ao manipular o CellParsing evento, você pode converter o valor por conta própria ou personalizar a conversão padrão. Por exemplo, você pode converter o valor por conta própria usando o método de célula ParseFormattedValue com conversores de tipo de sua escolha. Como alternativa, você pode permitir que os conversores de tipo padrão analisem o valor, mas modifiquem as NullValuepropriedades , DataSourceNullValuee FormatProvider do objeto retornado pela DataGridViewCellParsingEventArgs.InheritedCellStyle propriedade , que é inicializada usando a propriedade cell InheritedStyle .

Ao converter o valor por conta própria, substitua o valor inicial formatado da ConvertEventArgs.Value propriedade pelo valor convertido no tipo especificado pela propriedade de célula ValueType . Para indicar que nenhuma análise adicional é necessária, defina a DataGridViewCellParsingEventArgs.ParsingApplied propriedade como true.

Quando o manipulador de eventos é concluído, se o ConvertEventArgs.Value é null ou não do tipo correto, ou a DataGridViewCellParsingEventArgs.ParsingApplied propriedade é false, o Value é analisado usando o método de célula ParseFormattedValue com conversores de tipo padrão. A implementação padrão desse método analisa o valor usando as NullValuepropriedades , DataSourceNullValuee FormatProvider do estilo de célula passado. Se o valor não for igual a NullValue, o valor será analisado usando a FormatProvider propriedade e os conversores de tipo passados.

Para personalizar a conversão de um valor de célula em um valor formatado para exibição, manipule o CellFormatting evento.

Para obter mais informações sobre como lidar com eventos, consulte Manipulando e levantando eventos.

Aplica-se a

Confira também