Condividi tramite


Procedura: Inserire ToolTips a singole celle in un controllo DataGridView di Windows Forms

Per impostazione predefinita, le descrizioni comandi vengono utilizzate per visualizzare i valori delle celle DataGridView troppo piccole per mostrare l'intero contenuto. È tuttavia possibile eseguire l'override di questo comportamento per impostare i valori tooltip-text per singole celle. Ciò è utile per visualizzare agli utenti informazioni aggiuntive su una cella o fornire agli utenti una descrizione alternativa del contenuto della cella. Ad esempio, se si dispone di una riga che visualizza le icone di stato, è possibile fornire spiegazioni di testo usando i suggerimenti.

È anche possibile disabilitare la visualizzazione delle descrizioni comando a livello di cella impostando la proprietà DataGridView.ShowCellToolTips su false.

Per aggiungere un ToolTip a una cella

  • Imposta la proprietà 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
    

Compilazione del codice

  • Questo esempio richiede:

  • Controllo DataGridView denominato dataGridView1 che contiene una colonna denominata Rating per visualizzare i valori stringa da uno a quattro simboli asterischi ("*"). L'evento CellFormatting del controllo deve essere associato al metodo del gestore eventi illustrato nell'esempio.

  • Riferimenti agli assembly System e System.Windows.Forms.

Programmazione affidabile

Quando si associa il controllo DataGridView a un'origine dati esterna o si fornisce un'origine dati personalizzata implementando la modalità virtuale, è possibile che si verifichino problemi di prestazioni. Per evitare una perdita di prestazioni quando si usano delle grandi quantità di dati, gestire l'evento CellToolTipTextNeeded anziché impostare la proprietà ToolTipText di più celle. Quando si gestisce questo evento, ottenere il valore della proprietà della cella ToolTipText genera l'evento e restituisce il valore della proprietà DataGridViewCellToolTipTextNeededEventArgs.ToolTipText come specificato nel gestore dell'evento.

Vedere anche