Udostępnij za pośrednictwem


Instrukcje: dodawanie etykietek narzędzi do poszczególnych 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 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. Na przykład, jeśli masz rząd z ikonami stanu, możesz dodać tekstowe wyjaśnienia korzystając z ToolTipów.

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

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

  • Ustaw właściwość 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
    

Kompilowanie kodu

  • Ten przykład wymaga:

  • Kontrolka DataGridView o nazwie dataGridView1 zawierająca kolumnę o nazwie Rating 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

Jeśli powiążesz kontrolkę DataGridView z zewnętrznym źródłem danych lub udostępnisz własne źródło danych przez zaimplementowanie trybu wirtualnego, mogą wystąpić problemy z wydajnością. Aby uniknąć spadku wydajności podczas pracy z dużymi ilościami danych, obsługuj zdarzenie CellToolTipTextNeeded zamiast ustawiać właściwość ToolTipText wielu komórek. Kiedy obsługujesz to zdarzenie, pobranie wartości właściwości ToolTipText komórki powoduje wywołanie zdarzenia i zwraca wartość właściwości DataGridViewCellToolTipTextNeededEventArgs.ToolTipText, jak określono w procedurze obsługi zdarzeń.

Zobacz też