Comment : ajouter des info-bulles à des cellules dans un contrôle DataGridView Windows FormsHow to: Add ToolTips to Individual Cells in a Windows Forms DataGridView Control

Par défaut, les info-bulles sont utilisées pour afficher les valeurs de DataGridView cellules trop petites pour afficher l’intégralité de leur contenu.By default, ToolTips are used to display the values of DataGridView cells that are too small to show their entire contents. Toutefois, vous pouvez remplacer ce comportement pour définir des valeurs de texte info-bulle pour des cellules individuelles.You can override this behavior, however, to set ToolTip-text values for individual cells. Cela est utile pour afficher des informations supplémentaires sur une cellule pour les utilisateurs ou pour fournir aux utilisateurs une autre description du contenu des cellules.This is useful to display to users additional information about a cell or to provide to users an alternate description of the cell contents. Par exemple, si vous avez une ligne qui affiche des icônes d’État, vous souhaiterez peut-être fournir des explications de texte à l’aide d’info-bulles.For example, if you have a row that displays status icons, you may want to provide text explanations using ToolTips.

Vous pouvez également désactiver l’affichage des info-bulles au niveau de la cellule en affectant à la propriété DataGridView.ShowCellToolTips la valeur false.You can also disable the display of cell-level ToolTips by setting the DataGridView.ShowCellToolTips property to false.

Pour ajouter une info-bulle à une celluleTo add a ToolTip to a cell

  • définir la propriété DataGridViewCell.ToolTipText ;Set the DataGridViewCell.ToolTipText property.

    // 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 codeCompiling the Code

  • Cet exemple nécessite :This example requires:

  • Un contrôle DataGridView nommé dataGridView1 qui contient une colonne nommée Rating pour afficher les valeurs de chaîne de 1 à 4 symboles d’astérisques (« * »).A DataGridView control named dataGridView1 that contains a column named Rating for displaying string values of one through four asterisk ("*") symbols. L’événement CellFormatting du contrôle doit être associé à la méthode de gestionnaire d’événements illustrée dans l’exemple.The CellFormatting event of the control must be associated with the event handler method shown in the example.

  • des références aux assemblys System et System.Windows.Forms.References to the System and System.Windows.Forms assemblies.

Programmation fiableRobust Programming

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.When you bind the DataGridView control to an external data source or provide your own data source by implementing virtual mode, you might encounter performance issues. Pour éviter une altération des performances lorsque vous travaillez avec 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.To avoid a performance penalty when working with large amounts of data, handle the CellToolTipTextNeeded event rather than setting the ToolTipText property of multiple cells. Lorsque vous gérez cet événement, l’obtention de la valeur d’une cellule ToolTipText propriété déclenche l’événement et retourne la valeur de la propriété DataGridViewCellToolTipTextNeededEventArgs.ToolTipText telle que spécifiée dans le gestionnaire d’événements.When you handle this event, getting the value of a cell ToolTipText property raises the event and returns the value of the DataGridViewCellToolTipTextNeededEventArgs.ToolTipText property as specified in the event handler.

Voir aussiSee also