DataGridView.CellFormatting Événement
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Se produit lorsque le contenu d’une cellule doit être mis en forme pour l’affichage.
public:
event System::Windows::Forms::DataGridViewCellFormattingEventHandler ^ CellFormatting;
public event System.Windows.Forms.DataGridViewCellFormattingEventHandler CellFormatting;
public event System.Windows.Forms.DataGridViewCellFormattingEventHandler? CellFormatting;
member this.CellFormatting : System.Windows.Forms.DataGridViewCellFormattingEventHandler
Public Custom Event CellFormatting As DataGridViewCellFormattingEventHandler
Type d'événement
Exemples
L’exemple de code suivant montre comment gérer l’événement CellFormatting .
void dataGridView1_CellFormatting( Object^ /*sender*/, DataGridViewCellFormattingEventArgs^ e )
{
// If the column is the Artist column, check the
// value.
if ( this->dataGridView1->Columns[ e->ColumnIndex ]->Name->Equals( "Artist" ) )
{
if ( e->Value != nullptr )
{
// Check for the string "pink" in the cell.
String^ stringValue = dynamic_cast<String^>(e->Value);
stringValue = stringValue->ToLower();
if ( (stringValue->IndexOf( "pink" ) > -1) )
{
DataGridViewCellStyle^ pinkStyle = gcnew DataGridViewCellStyle;
//Change the style of the cell.
pinkStyle->BackColor = Color::Pink;
pinkStyle->ForeColor = Color::Black;
pinkStyle->Font = gcnew System::Drawing::Font( "Times New Roman",8,FontStyle::Bold );
e->CellStyle = pinkStyle;
}
}
}
else
if ( this->dataGridView1->Columns[ e->ColumnIndex ]->Name->Equals( "Release Date" ) )
{
ShortFormDateFormat( e );
}
}
//Even though the date internaly stores the year as YYYY, using formatting, the
//UI can have the format in YY.
void ShortFormDateFormat( DataGridViewCellFormattingEventArgs^ formatting )
{
if ( formatting->Value != nullptr )
{
try
{
System::Text::StringBuilder^ dateString = gcnew System::Text::StringBuilder;
DateTime theDate = DateTime::Parse( formatting->Value->ToString() );
dateString->Append( theDate.Month );
dateString->Append( "/" );
dateString->Append( theDate.Day );
dateString->Append( "/" );
dateString->Append( theDate.Year.ToString()->Substring( 2 ) );
formatting->Value = dateString->ToString();
formatting->FormattingApplied = true;
}
catch ( Exception^ /*notInDateFormat*/ )
{
// Set to false in case there are other handlers interested trying to
// format this DataGridViewCellFormattingEventArgs instance.
formatting->FormattingApplied = false;
}
}
}
private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
// If the column is the Artist column, check the
// value.
if (this.dataGridView1.Columns[e.ColumnIndex].Name == "Artist")
{
if (e.Value != null)
{
// Check for the string "pink" in the cell.
string stringValue = (string)e.Value;
stringValue = stringValue.ToLower();
if ((stringValue.IndexOf("pink") > -1))
{
e.CellStyle.BackColor = Color.Pink;
}
}
}
else if (this.dataGridView1.Columns[e.ColumnIndex].Name == "Release Date")
{
ShortFormDateFormat(e);
}
}
//Even though the date internaly stores the year as YYYY, using formatting, the
//UI can have the format in YY.
private static void ShortFormDateFormat(DataGridViewCellFormattingEventArgs formatting)
{
if (formatting.Value != null)
{
try
{
System.Text.StringBuilder dateString = new System.Text.StringBuilder();
DateTime theDate = DateTime.Parse(formatting.Value.ToString());
dateString.Append(theDate.Month);
dateString.Append("/");
dateString.Append(theDate.Day);
dateString.Append("/");
dateString.Append(theDate.Year.ToString().Substring(2));
formatting.Value = dateString.ToString();
formatting.FormattingApplied = true;
}
catch (FormatException)
{
// Set to false in case there are other handlers interested trying to
// format this DataGridViewCellFormattingEventArgs instance.
formatting.FormattingApplied = false;
}
}
}
Private Sub dataGridView1_CellFormatting(ByVal sender As Object, _
ByVal e As DataGridViewCellFormattingEventArgs) _
Handles dataGridView1.CellFormatting
' If the column is the Artist column, check the
' value.
If Me.dataGridView1.Columns(e.ColumnIndex).Name _
= "Artist" Then
If e.Value IsNot Nothing Then
' Check for the string "pink" in the cell.
Dim stringValue As String = _
CType(e.Value, String)
stringValue = stringValue.ToLower()
If ((stringValue.IndexOf("pink") > -1)) Then
e.CellStyle.BackColor = Color.Pink
End If
End If
ElseIf Me.dataGridView1.Columns(e.ColumnIndex).Name _
= "Release Date" Then
ShortFormDateFormat(e)
End If
End Sub
'Even though the date internaly stores the year as YYYY, using formatting, the
'UI can have the format in YY.
Private Shared Sub ShortFormDateFormat(ByVal formatting As DataGridViewCellFormattingEventArgs)
If formatting.Value IsNot Nothing Then
Try
Dim dateString As System.Text.StringBuilder = New System.Text.StringBuilder()
Dim theDate As Date = DateTime.Parse(formatting.Value.ToString())
dateString.Append(theDate.Month)
dateString.Append("/")
dateString.Append(theDate.Day)
dateString.Append("/")
dateString.Append(theDate.Year.ToString().Substring(2))
formatting.Value = dateString.ToString()
formatting.FormattingApplied = True
Catch notInDateFormat As FormatException
' Set to false in case there are other handlers interested trying to
' format this DataGridViewCellFormattingEventArgs instance.
formatting.FormattingApplied = False
End Try
End If
End Sub
Remarques
Par défaut, le DataGridView contrôle tente de convertir la valeur d’une cellule dans un format adapté à l’affichage. Par exemple, elle convertit une valeur numérique en chaîne pour l’affichage dans une cellule de zone de texte. Vous pouvez indiquer la convention de mise en forme à utiliser en définissant la Format propriété de la DataGridViewCellStyle propriété retournée par des propriétés telles que la DefaultCellStyle propriété.
Si la mise en forme standard est insuffisante, vous pouvez personnaliser la mise en forme en gérant l’événement CellFormatting . Cet événement vous permet d’indiquer la valeur d’affichage exacte ainsi que les styles de cellule, tels que l’arrière-plan et la couleur de premier plan, à utiliser pour l’affichage de cellule. Cela signifie que vous pouvez gérer cet événement pour n’importe quel type de mise en forme de cellule, que la valeur de cellule elle-même ait besoin de mise en forme.
L’événement CellFormatting se produit chaque fois que chaque cellule est peinte. Vous devez donc éviter un traitement long lors de la gestion de cet événement. Cet événement se produit également lorsque la cellule FormattedValue est récupérée ou que sa GetFormattedValue méthode est appelée.
Lorsque vous gérez l’événement CellFormatting , la ConvertEventArgs.Value propriété est initialisée avec la valeur de cellule. Si vous fournissez une conversion personnalisée de la valeur de cellule en valeur d’affichage, définissez la ConvertEventArgs.Value propriété sur la valeur convertie, en veillant à ce que la nouvelle valeur soit du type spécifié par la propriété de cellule FormattedValueType . Pour indiquer qu’aucune autre mise en forme de valeur n’est nécessaire, définissez la DataGridViewCellFormattingEventArgs.FormattingApplied propriété truesur .
Lorsque le gestionnaire d’événements est terminé, si le type est ou n’est pas correct, ou si la propriété est , la ValueDataGridViewCellFormattingEventArgs.FormattingApplied propriété est falsemise en forme à l’aide du FormatNullValuestyle de cellule , DataSourceNullValueet FormatProvider les propriétés du style de cellule retourné par la DataGridViewCellFormattingEventArgs.CellStyle propriété, qui est initialisée à l’aide de la propriété de celluleInheritedStyle.nullConvertEventArgs.Value
Quelle que soit la valeur de la DataGridViewCellFormattingEventArgs.FormattingApplied propriété, les propriétés d’affichage de l’objet retourné par la DataGridViewCellFormattingEventArgs.CellStyle propriété sont utilisées pour afficher la cellule.
Pour plus d’informations sur la mise en forme personnalisée à l’aide de l’événement CellFormatting , consultez Guide pratique pour personnaliser la mise en forme des données dans le contrôle DataGridView Windows Forms.
Pour éviter les pénalités de performances lors de la gestion de cet événement, accédez à la cellule via les paramètres du gestionnaire d’événements plutôt que d’accéder directement à la cellule.
Pour personnaliser la conversion d’une valeur mise en forme spécifiée par l’utilisateur en une valeur de cellule réelle, gérez l’événement CellParsing .
Pour plus d’informations sur la gestion des événements, consultez Gestion et déclenchement d’événements.
S’applique à
Voir aussi
- DefaultCellStyle
- DataGridViewCellStyle
- Format
- FormatProvider
- NullValue
- DataSourceNullValue
- InheritedStyle
- Value
- FormattedValue
- FormattedValueType
- GetFormattedValue(Object, Int32, DataGridViewCellStyle, TypeConverter, TypeConverter, DataGridViewDataErrorContexts)
- DataGridViewCellFormattingEventHandler
- DataGridViewCellFormattingEventArgs
- FormattingApplied
- CellStyle
- Value
- OnCellFormatting(DataGridViewCellFormattingEventArgs)
- CellParsing
- Styles de cellule dans le contrôle DataGridView Windows Forms
- Guide pratique pour personnaliser la mise en forme des données dans le contrôle DataGridView Windows Forms
- DataGridView Control (Windows Forms)