Guide pratique pour ajouter des info-bulles à des cellules individuelles dans un contrôle DataGridView Windows Forms
Par défaut, les info-bulles sont utilisées pour afficher les valeurs de DataGridView cellules trop petites pour afficher leur contenu entier. Toutefois, vous pouvez remplacer ce comportement pour définir des valeurs de texte d'info-bulle pour des cellules spécifiques. Cela est utile pour afficher aux utilisateurs des informations supplémentaires sur une cellule ou pour fournir aux utilisateurs une autre description du contenu de la cellule. Par exemple, si vous avez une ligne qui affiche des icônes d’état, vous pouvez fournir des explications de texte à l’aide d’info-bulles.
Vous pouvez également désactiver l’affichage des info-bulles au niveau de la cellule en définissant la propriété DataGridView.ShowCellToolTips sur false
.
Pour ajouter une info-bulle à une cellule
Définissez la propriété DataGridViewCell.ToolTipText.
// Sets the ToolTip text for cells in the Rating column. void dataGridView1_CellFormatting(Object^ /*sender*/, DataGridViewCellFormattingEventArgs^ e) { if ( (e->ColumnIndex == this->dataGridView1->Columns["Rating"]->Index) && e->Value != nullptr ) { DataGridViewCell^ cell = this->dataGridView1->Rows[e->RowIndex]->Cells[e->ColumnIndex]; if (e->Value->Equals("*")) { cell->ToolTipText = "very bad"; } else if (e->Value->Equals("**")) { cell->ToolTipText = "bad"; } else if (e->Value->Equals("***")) { cell->ToolTipText = "good"; } else if (e->Value->Equals("****")) { cell->ToolTipText = "very good"; } } }
// Sets the ToolTip text for cells in the Rating column. void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) { if ( (e.ColumnIndex == this.dataGridView1.Columns["Rating"].Index) && e.Value != null ) { DataGridViewCell cell = this.dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex]; if (e.Value.Equals("*")) { cell.ToolTipText = "very bad"; } else if (e.Value.Equals("**")) { cell.ToolTipText = "bad"; } else if (e.Value.Equals("***")) { cell.ToolTipText = "good"; } else if (e.Value.Equals("****")) { cell.ToolTipText = "very good"; } } }
' Sets the ToolTip text for cells in the Rating column. Sub dataGridView1_CellFormatting(ByVal sender As Object, _ ByVal e As DataGridViewCellFormattingEventArgs) _ Handles dataGridView1.CellFormatting If e.ColumnIndex = Me.dataGridView1.Columns("Rating").Index _ AndAlso (e.Value IsNot Nothing) Then With Me.dataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex) If e.Value.Equals("*") Then .ToolTipText = "very bad" ElseIf e.Value.Equals("**") Then .ToolTipText = "bad" ElseIf e.Value.Equals("***") Then .ToolTipText = "good" ElseIf e.Value.Equals("****") Then .ToolTipText = "very good" End If End With End If End Sub
Compilation du code
Cet exemple nécessite :
Contrôle DataGridView nommé
dataGridView1
qui contient une colonne nomméeRating
pour afficher les valeurs de chaîne d’un à quatre symboles astérisques (« * »). L’événement CellFormatting du contrôle doit être associé à la méthode de gestionnaire d’événements indiquée dans l’exemple.Références aux assemblages System et System.Windows.Forms.
Programmation robuste
Lorsque vous liez le contrôle DataGridView à une source de données externe ou que vous fournissez votre propre source de données en implémentant le mode virtuel, vous pouvez rencontrer des problèmes de performances. Pour éviter une pénalité de performances lors de l’utilisation de grandes quantités de données, gérez l’événement CellToolTipTextNeeded plutôt que de définir la propriété ToolTipText de plusieurs cellules. Lorsque vous gérez cet événement, l’obtention de la valeur d’une propriété de cellule ToolTipText déclenche l’événement et retourne la valeur de la propriété DataGridViewCellToolTipTextNeededEventArgs.ToolTipText comme spécifié dans le gestionnaire d’événements.
Voir aussi
.NET Desktop feedback