Практическое руководство. Добавление подсказок в отдельные ячейки в элементе управления DataGridView в Windows Forms
По умолчанию подсказки используются для отображения значений ячеек DataGridView, которые слишком малы для отображения всего содержимого. Однако можно переопределить это поведение, чтобы задать текстовые значения подсказки для отдельных ячеек. Это полезно для отображения пользователям дополнительных сведений о ячейке или предоставления пользователям альтернативного описания содержимого ячейки. Например, если у вас есть строка, отображающая значки состояния, может потребоваться предоставить объяснения текста с помощью подсказок.
Вы также можете отключить отображение подсказок уровня ячейки, задав для свойства DataGridView.ShowCellToolTips значение false
.
Добавить подсказку в ячейку
Задайте свойство 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
Компиляция кода
Для этого примера требуется:
Элемент управления DataGridView с именем
dataGridView1
, содержащий столбец с именемRating
для отображения строковых значений одного–четырех символов звездочки ("*"). Событие CellFormatting элемента управления должно быть связано с методом обработчика событий, показанным в примере.Ссылки на сборки System и System.Windows.Forms.
Надежное программирование
При привязке элемента управления DataGridView к внешнему источнику данных или предоставления собственного источника данных путем реализации виртуального режима могут возникнуть проблемы с производительностью. Чтобы избежать снижения производительности при работе с большими объемами данных, обработайте событие CellToolTipTextNeeded, а не задавайте свойство ToolTipText нескольких ячеек. При обработке этого события получение значения свойства ячейки ToolTipText вызывает событие и возвращает значение свойства DataGridViewCellToolTipTextNeededEventArgs.ToolTipText, указанного в обработчике событий.
См. также
.NET Desktop feedback