Практическое руководство. Определение текста всплывающих подсказок для отдельных ячеек элемента управления 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