Porady: dodawanie elementu ToolTips do pojedynczych komórek w formancie DataGridView formularzy systemu WindowsHow to: Add ToolTips to Individual Cells in a Windows Forms DataGridView Control

Domyślnie etykietki narzędzi są używane do wyświetlania wartości DataGridView komórek, które są zbyt małe, aby wyświetlić całą zawartość.By default, ToolTips are used to display the values of DataGridView cells that are too small to show their entire contents. Można jednak zastąpić to zachowanie, aby ustawić wartości tekstowe etykietki narzędzia dla poszczególnych komórek.You can override this behavior, however, to set ToolTip-text values for individual cells. Jest to przydatne w przypadku wyświetlania użytkownikom dodatkowych informacji o komórce lub zapewnienia użytkownikom alternatywnego opisu zawartości komórki.This is useful to display to users additional information about a cell or to provide to users an alternate description of the cell contents. 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.For example, if you have a row that displays status icons, you may want to provide text explanations using ToolTips.

Możesz również wyłączyć wyświetlanie etykietek na poziomie komórki, ustawiając właściwość DataGridView.ShowCellToolTips na false.You can also disable the display of cell-level ToolTips by setting the DataGridView.ShowCellToolTips property to false.

Aby dodać etykietkę narzędzia do komórkiTo add a ToolTip to a cell

  • Ustaw właściwość DataGridViewCell.ToolTipText.Set the DataGridViewCell.ToolTipText property.

    // 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 koduCompiling the Code

  • Ten przykład wymaga:This example requires:

  • Kontrolka DataGridView o nazwie dataGridView1, która zawiera kolumnę o nazwie Rating do wyświetlania wartości ciągów jednego z czterech gwiazdek ("*").A DataGridView control named dataGridView1 that contains a column named Rating for displaying string values of one through four asterisk ("*") symbols. Zdarzenie CellFormatting formantu musi być skojarzone z metodą obsługi zdarzeń pokazaną w przykładzie.The CellFormatting event of the control must be associated with the event handler method shown in the example.

  • Odwołania do zestawów System i System.Windows.Forms.References to the System and System.Windows.Forms assemblies.

Niezawodne programowanieRobust Programming

Po powiązaniu formantu DataGridView 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ą.When you bind the DataGridView control to an external data source or provide your own data source by implementing virtual mode, you might encounter performance issues. Aby uniknąć pogorszenia wydajności podczas pracy z dużymi ilościami danych, należy obsłużyć CellToolTipTextNeeded zdarzenia zamiast ustawiania właściwości ToolTipText wielu komórek.To avoid a performance penalty when working with large amounts of data, handle the CellToolTipTextNeeded event rather than setting the ToolTipText property of multiple cells. Podczas obsługi tego zdarzenia pobieranie wartości właściwości ToolTipText komórki wywołuje zdarzenie i zwraca wartość właściwości DataGridViewCellToolTipTextNeededEventArgs.ToolTipText, jak określono w obsłudze zdarzeń.When you handle this event, getting the value of a cell ToolTipText property raises the event and returns the value of the DataGridViewCellToolTipTextNeededEventArgs.ToolTipText property as specified in the event handler.

Zobacz takżeSee also