Comment : ajouter des info-bulles à des cellules dans un contrôle DataGridView Windows Forms

Par défaut, les info-bulles sont utilisées pour afficher les valeurs des cellules DataGridView qui sont trop petites pour afficher leur contenu entier. Toutefois, vous pouvez substituer ce comportement pour définir des valeurs ToolTip-text pour les cellules individuelles. Ceci est utile pour afficher aux utilisateurs des informations supplémentaires à propos d'une cellule ou pour fournir une autre description du contenu de la cellule. Par exemple, si vous avez une ligne qui affiche des icônes d'état, vous pouvez éventuellement fournir des explications de texte à l'aide d'info-bulles.

Vous pouvez également désactiver l'affichage des info-bulles de niveau de la cellule en attribuant à la propriété DataGridView.ShowCellToolTips la valeur 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.
    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 'dataGridView1_CellFormatting
    
    // 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.
    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";
            }
        }
    }
    

Compilation du code

  • Cet exemple nécessite les éléments suivants :

  • Un contrôle DataGridView nommé dataGridView1 qui contient une colonne nommée Rating pour afficher des valeurs de chaîne d'un à travers quatre symboles d'astérisque ("*"). L'événement CellFormatting du contrôle doit être associé à la méthode de gestionnaire d'événements illustrée dans l'exemple.

  • Références aux assemblys System et System.Windows.Forms.

Programmation fiable

Lorsque vous liez le contrôle DataGridView à une source de données externe ou fournissez votre propre source de données en implémentant le mode virtuel, vous pouvez rencontrer des problèmes de performance. Pour éviter une altération des performances lorsque vous travaillez avec de grands volumes de données, gérez l'événement CellToolTipTextNeeded au lieu de définir la propriété ToolTipText de plusieurs cellules. Lorsque vous gérez cet événement, l'obtention de la valeur de la propriété ToolTipText d'une cellule 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

Référence

DataGridView

DataGridView.ShowCellToolTips

DataGridView.CellToolTipTextNeeded

DataGridViewCell

DataGridViewCell.ToolTipText

Autres ressources

Programmation avec les cellules, lignes et colonnes dans le contrôle DataGridView Windows Forms