Dela via


Så här gör du: Lägga till verktygstips till enskilda celler i en Windows Forms DataGridView-kontroll

Som standardinställning används verktygstips för att visa de värden som DataGridView-celler har, när dessa är för små för att visa hela innehållet. Du kan dock åsidosätta det här beteendet för att ange ToolTip-text-värden för enskilda celler. Detta är användbart om du vill visa ytterligare information om en cell för användarna eller för att ge användarna en alternativ beskrivning av cellinnehållet. Om du till exempel har en rad som visar statusikoner kanske du vill ange textförklaringar med hjälp av Knappbeskrivningar.

Du kan också inaktivera visning av knappbeskrivningar på cellnivå genom att ange egenskapen DataGridView.ShowCellToolTips till false.

Så här lägger du till ett verktygstips i en cell

  • Ange egenskapen 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
    

Kompilera koden

  • Det här exemplet kräver:

  • En DataGridView kontroll med namnet dataGridView1 som innehåller en kolumn med namnet Rating för att visa strängvärden för en till fyra asterisksymboler ("*"). Kontrollens CellFormatting händelse måste associeras med den händelsehanterarmetod som visas i exemplet.

  • Referenser till System och System.Windows.Forms sammansättningar.

Robust Programmering

När du binder kontrollen DataGridView till en extern datakälla eller anger en egen datakälla genom att implementera virtuellt läge kan det uppstå prestandaproblem. Om du vill undvika prestandastraff när du arbetar med stora mängder data hanterar du CellToolTipTextNeeded händelsen i stället för att ange egenskapen ToolTipText för flera celler. När du hanterar den här händelsen, får du värdet av en cell ToolTipText-egenskapen, vilket utlöser händelsen och returnerar värdet av egenskapen DataGridViewCellToolTipTextNeededEventArgs.ToolTipText enligt specifikationerna i händelsehanteraren.

Se även