Porady: dodawanie elementu ToolTips do pojedynczych komórek w formancie DataGridView formularzy systemu Windows

Domyślnie narzędzie Wskazówki służy do wyświetlania wartości DataGridView komórek, które są zbyt małe, aby pokazać całą zawartość. To zachowanie można jednak zastąpić, aby ustawić wartości tekstowe etykietki narzędzi dla poszczególnych komórek. Jest to przydatne do wyświetlania użytkownikom dodatkowych informacji o komórce lub udostępniania użytkownikom alternatywnego opisu zawartości komórki. Jeśli na przykład masz wiersz, w którym są wyświetlane ikony stanu, możesz podać wyjaśnienia tekstowe przy użyciu narzędzia Wskazówki.

Można również wyłączyć wyświetlanie narzędzia na poziomie komórki Wskazówki ustawiając DataGridView.ShowCellToolTips właściwość na false.

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

  • DataGridViewCell.ToolTipText Ustaw 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:

  • Kontrolka DataGridView o nazwie zawierająca kolumnę o nazwie dataGridView1Rating do wyświetlania wartości ciągu od jednej do czterech gwiazdki ("*"). Zdarzenie CellFormatting kontrolki musi być skojarzone z metodą obsługi zdarzeń pokazaną w przykładzie.

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

Niezawodne programowanie

Po powiązaniu kontrolki DataGridView z zewnętrznym źródłem danych lub udostępnieniu własnego źródła danych przez zaimplementowanie trybu wirtualnego mogą wystąpić problemy z wydajnością. Aby uniknąć kary za wydajność podczas pracy z dużą ilością danych, należy obsłużyć CellToolTipTextNeeded zdarzenie, a nie ustawić ToolTipText właściwości wielu komórek. Gdy obsłużysz to zdarzenie, pobranie wartości właściwości komórki ToolTipText powoduje wywołanie zdarzenia i zwrócenie wartości DataGridViewCellToolTipTextNeededEventArgs.ToolTipText właściwości określonej w procedurze obsługi zdarzeń.

Zobacz też