Vorgehensweise: Hinzufügen von QuickInfos zu einzelnen Zellen in einem DataGridView-Steuerelement in Windows Forms

Standardmäßig werden QuickInfos verwendet, um die Werte von DataGridView-Zellen anzuzeigen, die zu klein sind, um ihren gesamten Inhalt zu zeigen. Sie können dieses Verhalten jedoch überschreiben, indem Sie QuickInfo-Textwerte für einzelne Zellen festlegen. Dies ist nützlich, um dem Benutzer zusätzliche Informationen zu einer Zelle anzuzeigen oder ihm eine alternative Beschreibung des Zellinhalts zu liefern. Wenn Sie z. B. eine Zeile haben, in der Statussymbole angezeigt werden, möchten Sie möglicherweise mithilfe von QuickInfos Erklärungen in Textform bereitstellen.

Sie können die Anzeige von QuickInfos auf Zellebene auch deaktivieren, indem Sie die DataGridView.ShowCellToolTips-Eigenschaft auf false festlegen.

So fügen Sie einer Zelle eine QuickInfo hinzu

  • Legen Sie die DataGridViewCell.ToolTipText-Eigenschaft 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

  • Für dieses Beispiel benötigen Sie Folgendes:

  • Ein DataGridView-Steuerelement mit dem Namen dataGridView1, das eine Spalte mit dem Namen Rating zur Anzeige von Zeichenfolgen mit einem 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.

Stabile Programmierung

Wenn Sie das DataGridView-Steuerelement an eine externe Datenquelle binden oder Ihre eigene Datenquelle durch Implementierung des virtuellen Modus bereitstellen, können Leistungsprobleme auftreten. Um Leistungseinbußen beim Arbeiten mit großen Datenmengen zu vermeiden, behandeln Sie das CellToolTipTextNeeded-Ereignis, anstatt die ToolTipText-Eigenschaft für mehrere Zellen festzulegen. Wenn Sie dieses Ereignis behandeln, löst das Abrufen des Werts einer ToolTipText-Eigenschaft der Zelle das Ereignis aus und gibt den Wert der DataGridViewCellToolTipTextNeededEventArgs.ToolTipText-Eigenschaft zurück, wie im Ereignishandler angegeben.

Weitere Informationen