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 false
festlegen.
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 NamenRating
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
.NET Desktop feedback