2009-01-28 6 views
0

J'ai besoin d'appliquer la mise en forme - en particulier, du 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 le support d'info-bulle moi-même.Comment formater l'info-bulle utilisée par un DataGridView en mode virtuel?

Répondre

3

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

travail pour moi avec .net 3.5

1

Comme l'indique le nom de l'événement, il veut simplement afficher le texte, qui n'aura pas de format.

Si vous voulez quelque chose comme le gras, ou d'autres types de formatage, vous allez devoir gérer vous-même l'affichage et le dessin de la pointe de l'outil. Vous pouvez utiliser le contrôle ToolTip pour aider, définissant la propriété OwnerDraw sur true et gérant l'événement Draw, mais notez que vous devrez probablement surcharger la grille de manière significative pour entrer dans cet événement au moment approprié.

Questions connexes