Instrukcje: dodawanie elementu ToolTips do pojedynczych komórek w kontrolce DataGridView formularzy systemu Windows

Domyślnie etykietki narzędzi są używane do wyświetlania wartości DataGridView komórek, które są zbyt małe, aby można było wyświetlić całą zawartość. Można jednak zastąpić to zachowanie, aby ustawić wartości tekstowe etykietki narzędzia dla poszczególnych komórek. Jest to przydatne w przypadku wyświetlania użytkownikom dodatkowych informacji o komórce lub zapewnienia użytkownikom alternatywnego opisu zawartości komórki. Na przykład jeśli masz wiersz, w którym są wyświetlane ikony stanu, możesz podać wyjaśnienie tekstu przy użyciu etykietek narzędzi.

Możesz również wyłączyć wyświetlanie etykietek na poziomie komórki, ustawiając DataGridView.ShowCellToolTips Właściwość na false .

Aby dodać etykietkę narzędzia do komórki

  • Ustaw DataGridViewCell.ToolTipText Właściwość.

    // 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
    

Kompilowanie kodu

  • Ten przykład wymaga:

  • DataGridViewKontrolka o nazwie dataGridView1 , która zawiera kolumnę o nazwie Rating do wyświetlania wartości ciągów jednego z czterech gwiazdek ("*"). CellFormattingZdarzenie kontrolki musi być skojarzone z metodą obsługi zdarzeń pokazaną w przykładzie.

  • Odwołania do System zestawów i System.Windows.Forms .

Niezawodne programowanie

Po powiązaniu DataGridView formantu z zewnętrznym źródłem danych lub udostępnieniu własnego źródła danych przez implementację trybu wirtualnego mogą wystąpić problemy z wydajnością. Aby uniknąć spadek wydajności podczas pracy z dużymi ilościami danych, należy obsłużyć CellToolTipTextNeeded zdarzenie zamiast ustawiania ToolTipText właściwości wielu komórek. Podczas obsługi tego zdarzenia pobieranie wartości ToolTipText właściwości komórki wywołuje zdarzenie i zwraca wartość DataGridViewCellToolTipTextNeededEventArgs.ToolTipText właściwości, jak określono w programie obsługi zdarzeń.

Zobacz także