Partager via


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ée Rating 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