Procedura: aggiungere descrizioni comandi a singole celle in un controllo DataGridView di Windows Form

Per impostazione predefinita, tool Suggerimenti vengono usati per visualizzare i valori delle DataGridView celle troppo piccole per visualizzare 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 Tool Suggerimenti.

È anche possibile disabilitare la visualizzazione dello strumento a livello di cella Suggerimenti impostando la DataGridView.ShowCellToolTips proprietà su false.

Per aggiungere una descrizione comando a una cella

  • Impostare 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

  • L'esempio presenta i requisiti seguenti:

  • Controllo DataGridView denominato dataGridView1 che contiene una colonna denominata Rating per la visualizzazione di 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 efficiente

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

Vedi anche