Как отформатировать подсказку, используемую DataGridView в виртуальном режиме? - PullRequest
0 голосов
/ 28 января 2009

Мне нужно применить форматирование, в частности жирный текст, к подсказке, используемой DataGridView в виртуальном режиме. Я могу установить текст в событии CellToolTipTextNeeded, но он не поддерживает теги HTML; есть какой-то другой синтаксис, который я должен использовать? Я не хочу переопределять поддержку всплывающей подсказки.

Ответы [ 2 ]

3 голосов
/ 10 февраля 2009

Вы можете использовать HtmlToolTip из http://www.codeproject.com/KB/GDI-plus/HtmlRenderer.aspx

To use it with DataGridView create a ToolTip (HtmlToolTip) and add this after the InitalizeComponent() in your form to replace the default tooltip:

System.Reflection.FieldInfo toolTipControlFieldInfo=
typeof(DataGridView).GetField("toolTipControl", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);

System.Reflection.FieldInfo toolTipFieldInfo=
toolTipControlFieldInfo.FieldType.GetField("toolTip", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);

object toolTipControlInstance =
toolTipControlFieldInfo.GetValue(myDataGridView);

toolTipFieldInfo.SetValue(toolTipControlInstance, myToolTip);

Работа для меня с .net 3.5

1 голос
/ 28 января 2009

Как видно из названия события, оно просто хочет, чтобы текст отображался без форматирования.

Если вы хотите что-то вроде жирного шрифта или других видов форматирования, вам придется самостоятельно обрабатывать отображение и рисование подсказки. Вы можете использовать элемент управления ToolTip, чтобы установить для свойства OwnerDraw значение true и обработать событие Draw, но учтите, что вам, скорее всего, придется существенно переопределить сетку, чтобы попасть в это событие в соответствующее время.

...