J'ai modifié le code de Gavin Stevens pour faire tout statique comme ceci:
class ToolTipHelper
{
private static readonly Dictionary<string, ToolTip> tooltips = new Dictionary<string, ToolTip>();
public static ToolTip GetControlToolTip(string controlName)
{
<same as above>
}
}
Maintenant, vous n'avez plus à instancier un ToolTipHelper (par conséquent, il n'a pas besoin de constructeur), et donc vous pouvez maintenant accéder à ce de n'importe quelle classe comme:
ToolTip tt = ToolTipHelper.GetControlToolTip("button1");
tt.SetToolTip(button1, "This is my button1 tooltip");
Aussi utile avec l'une ou l'autre version est d'activer et de désactiver une info-bulle, vous pouvez simplement définir tt.Active
vrai ou faux.
modifier
encore amélioré sur ce point:
class ToolTipHelper
{
private static readonly Dictionary<string, ToolTip> tooltips = new Dictionary<string, ToolTip>();
public static ToolTip GetControlToolTip(string controlName)
{
<same as above still>
}
public static ToolTip GetControlToolTip(Control control)
{
return GetControlToolTip(control.Name);
}
public static void SetToolTip(Control control, string text)
{
ToolTip tt = GetControlToolTip(control);
tt.SetToolTip(control, text);
}
}
Alors maintenant, la fixation d'un info-bulle de partout dans le programme est une seule ligne:
ToolTipHelper.SetToolTip(button1, "This is my button1 tooltip");
Si vous n » Vous n'avez pas besoin d'accéder aux anciennes fonctions, vous pouvez les combiner et/ou les rendre privées. Le SetToolTip()
est le seul que vous ayez jamais utilisé. e.
Ah, donc je devrais avoir une variable d'instance de classe tenant un objet au lieu infobulle et réutiliser quand il a besoin d'être changé. Merci beaucoup. – benmatth