Я использую событие CellToolTipTextNeeded
DataGridView
, и подсказка отображается под мышью. Я могу получить объект ToolTip
через отражение, но у меня нет никакого контроля над тем, где он позиционируется, так как я не тот, кто звонит Show()
. Как переместить всплывающую подсказку?Как переместить всплывающую подсказку?
ответ
Как насчет индивидуального подхода?
Я думаю, что короткий ответ: вы не можете, еще нет. Я, вероятно, подумал бы о создании пользовательского, например, «неизвестного (yahoo)».
Вам нужно будет самостоятельно управлять всплывающей подсказкой, используя методы «Показать» и «Скрыть», если вам нужен какой-либо контроль над тем, как и где он размещается с использованием рамки 2.0, если вы не хотите попасть в вызовы API окна.
К сожалению, похоже, что позиция всплывающей подсказки установлена очень, очень рано в ее создании. Всплывающая подсказка имеет только 3 события для обработки, и мы не очень заинтересованы в Dispose в этом случае.
Событие Draw запускается после события Popup, и кажется, что позиция уже установлена, поскольку свойство Bounds в PopupEventArgs является только для чтения.
Вот ссылка на один из многих статей (во время этого поста) о создании пользовательского элемента управления: http://andrusdevelopment.blogspot.com/2007/10/implementing-custom-tooltip-in-c.html
И в документации MSDN об использовании всплывающей подсказки Показать и скрыть методы на самом деле довольно приличные: http://msdn.microsoft.com/en-us/library/44atyhsa(VS.80,printer).aspx
Извините, но это просто не похоже на быстрый и легкий ответ на этот вопрос. Надеюсь, кто-то докажет, что я ошибаюсь.
Скотт
Существует хороший ответ на эту ссылку, которая использует объект подсказке.