Nasıl yapılır: Bir Windows Forms DataGridView Denetiminde Ayrı Hücrelere ToolTips Ekleme

Varsayılan olarak, araç Ipuçları, DataGridView tüm içeriğini gösteremeyecek kadar küçük hücrelerin değerlerini görüntülemek için kullanılır. Bununla birlikte, tek tek hücreler için araç Ipucu metin değerlerini ayarlamak için bu davranışı geçersiz kılabilirsiniz. Bu, kullanıcılara bir hücreyle ilgili ek bilgiler göstermek veya kullanıcılara hücre içeriğinin alternatif bir açıklamasını sağlamak için yararlıdır. Örneğin, durum simgelerini görüntüleyen bir satırınız varsa, araç Ipuçlarını kullanarak metin açıklamaları sağlamak isteyebilirsiniz.

Ayrıca, özelliğini olarak ayarlayarak hücre düzeyi araç Ipuçlarının görüntülenmesini devre dışı bırakabilirsiniz DataGridView.ShowCellToolTipsfalse .

Bir hücreye araç Ipucu eklemek için

  • Özelliği ayarlayın 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
    

Kod Derleniyor

  • Bu örnek şunları gerektirir:

  • DataGridViewdataGridView1Rating Bir-dört yıldız işareti ("*") sembollerinin dize değerlerini görüntülemek için adlı bir sütun içeren adlı bir denetim. CellFormattingDenetimin olayının, örnekte gösterilen olay işleyicisi yöntemiyle ilişkilendirilmesi gerekir.

  • SystemVe System.Windows.Forms derlemelerine başvurular.

Güçlü Programlama

DataGridViewDenetimi bir dış veri kaynağına bağladığınızda veya sanal modu uygulayarak kendi veri kaynağınızı sağladığınızda, performans sorunlarıyla karşılaşabilirsiniz. Büyük miktarlarda verilerle çalışırken bir performans cezasından kaçınmak için, CellToolTipTextNeededToolTipText birden çok hücrenin özelliğini ayarlamak yerine olayı işleyin. Bu olayı işlerken, bir hücre özelliğinin değerini almak ToolTipText olayı oluşturur ve DataGridViewCellToolTipTextNeededEventArgs.ToolTipText olay işleyicisinde belirtilen özelliğin değerini döndürür.

Ayrıca bkz.