Comment puis-je modifier le texte d'un contrôle ToolTip existant dans un PictureBox dans mon application WinForm?
J'ai une application winform qui a un nombre dynamique (basée sur une valeur de base de données) de PictureBoxes
. Chaque P-Box a un Tooltip
de contrôle.
Comment puis-je modifier le Texte d'info-bulle, sans avoir toutes les fuites de mémoire? Maintenant, j'ai le code suivant, mais c'est une fuite de mémoire => la précédente bulle d'aide de contrôles ne sont pas prise en GC.
BTW, c'est un thread d'arrière-plan qui est en train d'essayer de mettre à jour l'INTERFACE utilisateur principale de fil....
if (pictureBox == null || !pictureBox.IsHandleCreated) {
continue;
}
Action setTooltipAndImage = () => {
var toolTip = new ToolTip();
GameServer tempGameFile = gameServer;
toolTip.SetToolTip(pictureBox, string.Format(...));
pictureBox.Image = Resources.RedButton;
};
if (pictureBox.InvokeRequired) {
pictureBox.Invoke(setTooltipAndImage);
} else {
setTooltipAndImage();
}
Comme je l'ai dit - ce qui fonctionne, mais c'est une fuite.
Quelqu'un a des suggestions?
source d'informationauteur Pure.Krome
Vous devez vous connecter pour publier un commentaire.
De ne pas créer une nouvelle info-bulle à chaque fois. Ajouter une info-bulle de la forme à l'aide de visual designer, comme vous le feriez pour tout autre composant ou contrôle. Appel
toolTip.SetToolTip(...)
sur la forme de la pointe de l'outil à chaque fois. L'info-bulle sera éliminé lorsque le Formulaire est supprimé.Oui, vous n'avez pas besoin de créer une nouvelle info-bulle à chaque fois, un seul ToolTipwill faire. Il n'y a pas de problème si vous ne savez pas combien d'info-bulles vous voulez, parce que s'il n'existe qu'une info-bulle dire
toolTip1
alors vous pouvez utiliser ce qui suit à chaque fois que vous voulez modifier l'info-bulle de légende et de contrôle sur certains événements. Vous avez seulement besoin d'une info-bulle instance par formulaire.