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

Par défaut, l’outil Astuces est utilisé pour afficher les valeurs des DataGridView cellules trop petites pour afficher leur contenu entier. Toutefois, vous pouvez remplacer ce comportement pour définir des valeurs de texte info-bulle pour des cellules individuelles. 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 de l’outil Astuces.

Vous pouvez également désactiver l’affichage de l’outil au niveau de la cellule Astuces en définissant la DataGridView.ShowCellToolTips propriété falsesur .

Pour ajouter une info-bulle à une cellule

  • définir 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 astérisques (« * »). L’événement CellFormatting du contrôle doit être associé à la méthode du gestionnaire d’événements indiquée dans l’exemple.

  • des références aux assemblys System et System.Windows.Forms.

Programmation fiable

Lorsque vous liez le contrôle à une source de données externe ou que vous fournissez votre propre source de données en implémentant le DataGridView 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 ToolTipText propriété 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 DataGridViewCellToolTipTextNeededEventArgs.ToolTipText propriété comme spécifié dans le gestionnaire d’événements.

Voir aussi