Как переопределить поведение всплывающей подсказки по умолчанию для представления данных C # для увеличения задержки всплывающей подсказки для определенных ячеек - PullRequest
0 голосов
/ 19 апреля 2011

У меня есть приложение Windows Form с привязанным сетевым представлением в C #.Я нахожу способ увеличить продолжительность всплывающей подсказки для ячеек определенного столбца.Подсказка задается в обработчике CellMouseEnter путем установки свойства cell.TooltipText.Судя по исследованиям, которые я провел в Интернете, мне кажется, что для увеличения задержки мне нужен внешний объект всплывающей подсказки.Но для этого, похоже, ShowCellToolTips должен быть установлен в false.Мне нужно, чтобы ShowCellToolTips был установлен в true, поскольку cell.ToolTipText устанавливается для других ячеек столбца в других различных функциях.Есть ли способ переопределить свойство cell.ToolTipText по умолчанию для ячеек определенного столбца и иметь всплывающую подсказку отображения внешнего объекта Tooltip?Цель - установить для ShowCellToolTips значение true и увеличить задержку для всплывающей подсказки или предоставить пользователю элемент управления для закрытия всплывающей подсказки.Есть ли способ сделать это?Любая помощь будет очень ценится.Спасибо.

Ответы [ 2 ]

4 голосов
/ 19 апреля 2011

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

Попробуйте это:

  • Добавить элемент управления всплывающей подсказки в форму
  • Используйте CellToolTipTextNeeded вашего DGV (или CellMouseEnter) событие, чтобы определить, хотите ли вы отобразить всплывающую подсказку и, если это так, вызвать всплывающая подсказка ToolTip.Show метод.

Вот пример:

private void dataGridView1_CellToolTipTextNeeded(object sender, DataGridViewCellToolTipTextNeededEventArgs e) {
    if (e.ColumnIndex == 2) {     // Display the tool tip only on DGV ColumnIndex 2.
        Rectangle cellRect = dataGridView1.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, false);
        toolTip1.Show("This is my ToolTip text",
                      this,
                      dataGridView1.Location.X + cellRect.X + cellRect.Size.Width,
                      dataGridView1.Location.Y + cellRect.Y + cellRect.Size.Height,
                      5000);    // Duration: 5 seconds.
    } else if (e.ColumnIndex >= 0 && e.RowIndex >= 0) {
        toolTip1.Hide(this);
        dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].ToolTipText = " Hello from column: " + e.ColumnIndex.ToString();
    }
}

Обратите внимание, что мы не используем событие CellToolTipTextNeeded, чтобы установить свойство ToolTipText объекта DataGridViewCell.

Преимущество использования элемента управления ToolTip заключается в том, что вы можете настроить внешний вид и поведение всплывающей подсказки через свойства элемента управления ToolTip.

0 голосов
/ 24 февраля 2012

Я думаю, что вы можете просто отключить DataGridView.ShowToolTip и обработать событие MouseEnter.

См. Эту статью о том, как использовать подсказку: http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.cellmouseenter.aspx

Одна из проблемРешение с использованием JayRiggs состоит в том, что когда сетка имеет столбец, который не отображает полный текст, отображаются две всплывающие подсказки.Один из них - отображаемая пользовательская подсказка, а другой - всплывающая подсказка по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...