Instrukcje: dodawanie etykietek narzędzi do poszczególnych komórek w kontrolce DataGridView formularzy systemu Windows
Domyślnie etykietki narzędzi są używane do wyświetlania wartości DataGridView komórek, które są zbyt małe, aby pokazać całą zawartość. To zachowanie można jednak zastąpić, aby ustawić wartości tekstowe etykietki narzędzi dla poszczególnych komórek. Jest to przydatne do wyświetlania użytkownikom dodatkowych informacji o komórce lub udostępniania użytkownikom alternatywnego opisu zawartości komórki. Na przykład, jeśli masz rząd z ikonami stanu, możesz dodać tekstowe wyjaśnienia korzystając z ToolTipów.
Można również wyłączyć wyświetlanie etykietek narzędzi na poziomie komórki, ustawiając właściwość DataGridView.ShowCellToolTips na false
.
Aby dodać etykietkę narzędzia do komórki
Ustaw właściwość 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
Kompilowanie kodu
Ten przykład wymaga:
Kontrolka DataGridView o nazwie
dataGridView1
zawierająca kolumnę o nazwieRating
do wyświetlania wartości ciągu od jednej do czterech gwiazdki ("*"). Zdarzenie CellFormatting kontrolki musi być skojarzone z metodą obsługi zdarzeń pokazaną w przykładzie.Odwołania do zestawów System i System.Windows.Forms.
Niezawodne programowanie
Jeśli powiążesz kontrolkę DataGridView z zewnętrznym źródłem danych lub udostępnisz własne źródło danych przez zaimplementowanie trybu wirtualnego, mogą wystąpić problemy z wydajnością. Aby uniknąć spadku wydajności podczas pracy z dużymi ilościami danych, obsługuj zdarzenie CellToolTipTextNeeded zamiast ustawiać właściwość ToolTipText wielu komórek. Kiedy obsługujesz to zdarzenie, pobranie wartości właściwości ToolTipText komórki powoduje wywołanie zdarzenia i zwraca wartość właściwości DataGridViewCellToolTipTextNeededEventArgs.ToolTipText, jak określono w procedurze obsługi zdarzeń.
Zobacz też
.NET Desktop feedback