Partage via


DataGridView.CellParsing Événement

Définition

Se produit lorsqu’une cellule quitte le mode d’édition si la valeur de la cellule a été modifiée.

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 

Type d'événement

Exemples

L’exemple de code suivant montre comment gérer l’événement CellParsing . Il montre également comment utiliser 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

Remarques

Par défaut, le DataGridView contrôle tente de convertir une valeur spécifiée par l’utilisateur affichée dans une cellule en valeur de cellule sous-jacente réelle dans le type spécifié par la propriété de cellule ValueType . Cette conversion utilise les propriétés de mise en forme du style de cellule retourné par la propriété de cellule InheritedStyle .

Si la conversion standard ne répond pas à vos besoins, gérez l’événement CellParsing pour fournir une conversion de valeur personnalisée vers le type requis.

Les utilisateurs peuvent entrer en mode d’édition à l’aide de la méthode spécifiée par la propriété et peuvent quitter le EditMode mode d’édition, valider les modifications apportées à une cellule, en se déplaçant vers une autre cellule ou en appuyant sur Entrée. L’appui sur Échap rétablit les modifications apportées à la valeur avant qu’elle ne soit validée, et l’événement CellParsing ne se produit pas. L’événement CellParsing se produit uniquement si la valeur de cellule a été réellement modifiée, même si la valeur finale est identique à la valeur d’origine. Elle se produit également lorsque la CommitEdit méthode est appelée.

Lorsque vous gérez l’événement CellParsing , vous pouvez convertir la valeur vous-même ou personnaliser la conversion par défaut. Par exemple, vous pouvez convertir la valeur vous-même à l’aide de la méthode de cellule ParseFormattedValue avec des convertisseurs de type de votre choix. Vous pouvez également laisser les convertisseurs de type par défaut analyser la valeur, mais modifier les propriétés de l’objet retourné par la DataGridViewCellParsingEventArgs.InheritedCellStyle propriété, qui est initialisée à l’aide de la propriété de celluleInheritedStyle.FormatProviderDataSourceNullValueNullValue

Lorsque vous convertissez la valeur vous-même, remplacez la valeur initiale mise en forme de la ConvertEventArgs.Value propriété par la valeur convertie dans le type spécifié par la propriété de cellule ValueType . Pour indiquer qu’aucune analyse supplémentaire n’est nécessaire, définissez la DataGridViewCellParsingEventArgs.ParsingApplied propriété sur true.

Lorsque le gestionnaire d’événements est terminé, si le ConvertEventArgs.Value type est null ou n’est pas correct, ou si la propriété est , elle ValueDataGridViewCellParsingEventArgs.ParsingApplied est falseanalysée à l’aide de la méthode de cellule ParseFormattedValue avec des convertisseurs de type par défaut. L’implémentation par défaut de cette méthode analyse la valeur à l’aide du NullValuestyle DataSourceNullValuede cellule, et FormatProvider les propriétés du style de cellule transmis. Si la valeur n’est pas égale à , la valeur est analysée à NullValuel’aide de la FormatProvider propriété et des convertisseurs de type transmis.

Pour personnaliser la conversion d’une valeur de cellule en valeur mise en forme pour l’affichage, gérez l’événement CellFormatting .

Pour plus d’informations sur la gestion des événements, consultez Gestion et déclenchement d’événements.

S’applique à

Voir aussi