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