DataGridView ToolTipText не отображается - PullRequest
9 голосов
/ 23 декабря 2008

У меня есть привязка данных DataGridView в настольном приложении со столбцами, для которых установлено свойство ToolTipText, но при наведении указателя мыши на отображение сетки (ячейки или заголовки ячеек) подсказка не отображается.

Свойство ShowCellToolTips вида сетки имеет значение true, и я проверил с помощью точек останова, что оно не изменяется программно до наведения мыши.

Я попытался создать обработчик события CellToolTipTextNeeded, чтобы увидеть, что это был за текст подсказки, но обработчик события никогда не вызывается.

Есть что-то, что я пропустил?

Спасибо, Rob

Редактировать: Мы используем фреймворк 2.0.

Ответы [ 12 ]

9 голосов
/ 08 января 2009

Из вашего вопроса следует, что вы задали текст всплывающей подсказки для столбцов. Текст всплывающей подсказки столбцов появляется только при перемещении по заголовкам. Чтобы отобразить текст всплывающей подсказки в ячейках, необходимо подключить событие CellToolTipTextNeeded и установить значение e.ToolTipText в аргументах события

4 голосов
/ 30 апреля 2010

Когда я добавил в форму представление таблицы данных с одним (пустым) столбцом, добавил текст в свойство ToolTipText для этого столбца и убедился, что для свойства ShowCellToolTips для представления данных установлено значение True, всплывающая подсказка появляется Я наведите курсор мыши на заголовок этого столбца. Кажется, это противоречит тому, что было сказано в исходном вопросе, но в моем тесте сетка не была привязана к данным. Не уверен, что это имеет значение. Однако в проекте с сеткой данных с привязкой к данным я просто использовал компонент ToolTip:

(1) Добавьте компонент ToolTip к вашей форме.
(2) Задайте для свойства ToolTip on toolTip1 (или эквивалентного имени для вашего компонента ToolTip) для вашего вида сетки данных любой текст, который вы хотите отобразить.
(3) Установите для свойства ShowCellToolTips вашего datagridview значение False.
(4) Альт! Работает как положено.

4 голосов
/ 11 февраля 2010

Попробуйте использовать свойство Cell.ToolTipText. Вероятно, вам нужно будет зациклить строки DataGridView и установить подсказки вручную:

 For Each row As DataGridViewRow In Me.DataGridView.Rows
   Me.DataGridView("MyCol", row.Index).ToolTipText = "MyToolTipText"
 Next

Может не подходить для связанного DataGridView с большим количеством строк, но успешно работает для меня с несвязанным DataGridView с парой сотен строк. Надеюсь, это поможет.

3 голосов
/ 31 октября 2015

Чтобы показать всплывающую подсказку ячейки сетки, вы можете использовать этот обработчик событий " CellToolTipTextNeeded ". Смотрите приведенный ниже фрагмент кода,

this.dataGridView1.ShowCellToolTips = true;
this.dataGridView1.CellToolTipTextNeeded += dataGridView1_CellToolTipTextNeeded;

void dataGridView1_CellToolTipTextNeeded(object sender, DataGridViewCellToolTipTextNeededEventArgs e)
{
    if (e.ColumnIndex >= 0 && e.RowIndex >= 0)           
    {
        e.ToolTipText = this.dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
    }
}
2 голосов
/ 17 мая 2012

У меня была проблема симуляции, но я смог ее исправить, установив для ShowCellToolTip значение true в моем DataGridView. Как только я это сделал, я смог отправить следующий код, и все работало нормально.

tableDocTypes.ShowCellToolTips = true;
tableDocTypes.Rows[i].Cells[columnFormCabinet.Index].ToolTipText = "Cabinet is not defined on the optical server.";
2 голосов
/ 13 февраля 2009

Мы закончили с использованием виджета подсказки и событий CellMouseEnter, CellMouseLeave, чтобы показать его соответствующим образом. Не оптимально, но оно работает вокруг странного поведения, которое мы испытывали.

1 голос
/ 07 января 2016

Установить для свойства datagridview ShowCellToolTips значение False

1 голос
/ 19 марта 2010

В настоящее время я испытываю тот же бэовюр на Framework 3.5. Похоже, что свойство DataSource необходимо установить, чтобы вызвать событие CelToolTipTextNeeded.

0 голосов
/ 12 ноября 2018

Возникла связанная с этим проблема, когда CellToolTipTextNeeded будет вызываться только изредка . Поведение было всплывающей подсказкой над всплывающей подсказкой при переполнении ячейки. Если для WrapMode ячейки установлено значение true, CellToolTipTextNeeded будет вызываться правильно каждый раз. Я думал, что CellToolTipTextNeeded будет вызван и переопределит общую подсказку, но, похоже, это событие вызывается только при первой записи в datagridview.cell, а затем, если мышь покидает ячейку и возвращается (оставаясь в datagridview), всплывающая подсказка "Просмотр переполнения" показывает вместо ...

В любом случае информация может помочь кому-то еще.

0 голосов
/ 08 сентября 2015
  1. установите для свойства ShowCellToolTips вашего DataGridView значение false
  2. Поместите этот код в событие CellMouseEnter вашего DataGridView

    private void dgv_CellMouseEnter(object sender, DataGridViewCellEventArgs e)
    {
        if (!(dgv.Rows[e.RowIndex].Cells[e.ColumnIndex].GetType() == typeof(DataGridViewImageCell))) return;
        System.Windows.Forms.ToolTip tlp = new System.Windows.Forms.ToolTip();
        tlp.SetToolTip(dgv, "Your ToolTipText");
    }
    
...