Question

Je dois appliquer un formatage - en particulier un texte en gras - à l'info-bulle utilisée par un DataGridView en mode virtuel. Je peux définir le texte dans l'événement CellToolTipTextNeeded, mais il ne prend pas en charge les balises HTML. Y a-t-il une autre syntaxe que je devrais utiliser? Je ne veux pas avoir à réimplémenter l'info-bulle d'aide moi-même.

Était-ce utile?

La solution

Vous pouvez utiliser le HtmlToolTip à partir de 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);

Travaillez pour moi avec .net 3.5

Autres conseils

Comme le nom de l'événement l'indique, il souhaite simplement que le texte soit affiché, sans formatage.

Si vous souhaitez une mise en forme en gras ou autre, vous devrez gérer vous-même l'affichage et le dessin de la pointe de l'outil. Vous pouvez utiliser le contrôle ToolTip pour vous aider, en définissant la propriété OwnerDraw sur true et en gérant l'événement Draw, mais notez que vous devrez probablement remplacer la grille de manière significative pour pouvoir entrer dans cet événement au moment opportun.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top