Freigeben über


So geht's: Hinzufügen von ToolTips zu einzelnen Zellen in einem Windows Forms DataGridView-Steuerelement

Standardmäßig werden QuickInfos verwendet, um die Werte der DataGridView-Zellen anzuzeigen, die zu klein sind, um den gesamten Inhalt anzuzeigen. Sie können dieses Verhalten jedoch außer Kraft setzen, um ToolTip-Textwerte für einzelne Zellen festzulegen. Dies ist nützlich, um Benutzern zusätzliche Informationen zu einer Zelle anzuzeigen oder Benutzern eine alternative Beschreibung des Zellinhalts bereitzustellen. Wenn Sie beispielsweise über eine Zeile verfügen, in der Statussymbole angezeigt werden, können Sie Texterklärungen mithilfe von QuickInfos bereitstellen.

Sie können auch die Anzeige von QuickInfos auf Zellenebene deaktivieren, indem Sie die Eigenschaft DataGridView.ShowCellToolTips auf falsefestlegen.

So fügen Sie einer Zelle eine QuickInfo hinzu

  • Legen Sie die eigenschaft DataGridViewCell.ToolTipText fest.

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

Kompilieren des Codes

  • In diesem Beispiel ist Folgendes erforderlich:

  • Ein DataGridView Steuerelement mit dem Namen dataGridView1, das eine Spalte mit dem Namen Rating zum Anzeigen von Zeichenfolgenwerten von 1 bis vier Sternchen ("*") enthält. Das CellFormatting-Ereignis des Steuerelements muss der im Beispiel gezeigten Ereignishandlermethode zugeordnet sein.

  • Verweise auf die assemblys System und System.Windows.Forms.

Robuste Programmierung

Wenn Sie das DataGridView-Steuerelement an eine externe Datenquelle binden oder Ihre eigene Datenquelle bereitstellen, indem Sie den virtuellen Modus implementieren, treten möglicherweise Leistungsprobleme auf. Um Leistungseinbußen beim Arbeiten mit großen Datenmengen zu vermeiden, behandeln Sie das CellToolTipTextNeeded-Ereignis, anstatt die ToolTipText-Eigenschaft mehrerer Zellen zu verändern. Wenn Sie dieses Ereignis behandeln, löst das Abrufen des Wertes der Eigenschaft einer Zelle ToolTipText das Ereignis aus und gibt den Wert der Eigenschaft DataGridViewCellToolTipTextNeededEventArgs.ToolTipText zurück, wie im Ereignishandler angegeben.

Siehe auch