Gewusst wie: Hinzufügen von QuickInfos zu einzelnen Zellen in einem DataGridView-Steuerelement in Windows Forms
Aktualisiert: November 2007
Standardmäßig werden QuickInfos verwendet, um die Werte von DataGridView-Zellen anzuzeigen, die zu klein sind, um den gesamten Inhalt anzuzeigen. Sie können dieses Verhalten jedoch überschreiben, um QuickInfo-Textwerte für einzelne Zellen festzulegen. Dies bietet sich an, um Benutzern zusätzliche Informationen über eine Zelle anzuzeigen oder ihnen eine alternative Beschreibung des Zelleninhalts bereitzustellen. Wenn Sie beispielsweise über eine Zeile verfügen, in der Zustandssymbole angezeigt werden, möchten Sie möglicherweise Texterläuterungen in Form von QuickInfos bereitstellen.
Sie können die Anzeige von QuickInfos auf Zellenebene 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. 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 'dataGridView1_CellFormatting
// 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. 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"; } } }
Kompilieren des Codes
Für dieses Beispiel ist Folgendes erforderlich:
Ein DataGridView-Steuerelement mit dem Namen dataGridView1, das eine Spalte mit dem Namen Rating enthält, um Zeichenfolgenwerte in Form von einem bis vier Sternchensymbolen ("*") anzuzeigen. Das CellFormatting-Ereignis des Steuerelements muss mit der im Beispiel gezeigten Ereignishandlermethode verknüpft sein.
Verweise auf die System-Assembly und die System.Windows.Forms-Assembly.
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 bei der Arbeit mit großen Datenmengen zu vermeiden, behandeln Sie das CellToolTipTextNeeded-Ereignis, anstatt die ToolTipText-Eigenschaft mehrerer Zellen festzulegen. Wenn Sie dieses Ereignis behandeln, wird durch Abrufen des Werts einer ToolTipText-Zelleneigenschaft das Ereignis ausgelöst und der Wert der DataGridViewCellToolTipTextNeededEventArgs.ToolTipText-Eigenschaft wie im Ereignishandler festgelegt zurückgegeben.
Siehe auch
Referenz
DataGridView.CellToolTipTextNeeded
Weitere Ressourcen
Programmieren mit Zellen, Zeilen und Spalten im DataGridView-Steuerelement in Windows Forms