2008-10-21 3 views
1

Je veux avoir une info-bulle pour chaque élément dans une vue arborescente, et chaque élément dans une vue de liste, et différent pour chaque sous-élément (c'est-à-dire la colonne) dans la liste.WinForms: Comment personnaliser une info-bulle quand elle est sur le point d'être affichée?

je peux déterminer le texte que je veux montrer (en utilisant un test de recherche avec la position actuelle de la souris, etc.):

private void toolTip1_Popup(object sender, PopupEventArgs e) 
{ 
    if (e.AssociatedControl == listView1) 
    { 
     toolTip1.SetToolTip(listView1, "foo"); 
    } 
} 

mais toute tentative de définir le texte de l'infobulle provoque une stackoverflow.

Comment puis-je personnaliser l'info-bulle (icône, titre, texte) juste avant son apparition?

Répondre

2

Vous devez protéger votre code dans le gestionnaire d'événements Popup afin que vous n'appeliez pas SetToolTip si vous appelez le SetToolTip à l'intérieur de celui-ci.

Quelque chose comme:

private bool updatingTooltip; 
private void toolTip1_Popup(object sender, PopupEventArgs e) 
{ 
    if (!this.updatingTooltip && (e.AssociatedControl == listView1)) 
    { 
     this.updatingTooltip = true; 
     toolTip1.SetToolTip(listView1, "foo"); 
     this.updatingTooltip = false; 
    } 
} 
Questions connexes