J'ai essayé de trouver la cause de la modification de mes tailles de ballons et du recadrage du texte. Je pensais que cela avait à voir avec la réinitialisation du texte de pointe pour un contrôle. Nan. Il s'avère que c'est l'annulation de popOpen. Une fois que vous annulez, cela affectera négativement le prochain ballon à ouvrir.ToolTip IsBalloon annule la taille du prochain ballon ouvert
Quelqu'un a des idées brillantes sur une solution de rechange?
Voici le code: (pour reproduire le bug, exécutez-le et mouseOver l3, puis l2, puis l, puis l3 - dans cet ordre).
public partial class Form7 : Form
{
private Label l, l2, l3;
public Form7()
{
InitializeComponent();
toolTip1.IsBalloon = true;
toolTip1.Popup += new PopupEventHandler(toolTip1_Popup);
l = new Label();
l.Name="l";
l.Text = "Label 1";
l.Top = 100;
l.Left = 100;
l2 = new Label();
l2.Name="l2";
l2.Text = "Label 2";
l2.Top = 150;
l2.Left = 100;
l3 = new Label();
l3.Name = "l3";
l3.Text = "Label 3";
l3.Top = 200;
l3.Left = 100;
this.Controls.Add(l);
this.Controls.Add(l2);
this.Controls.Add(l3);
toolTip1.SetToolTip(l, "Hello.");
toolTip1.SetToolTip(l2, "This is longer.");
toolTip1.SetToolTip(l3, "This is even longer than Label 2.");
}
void toolTip1_Popup(object sender, PopupEventArgs e)
{
Control c = e.AssociatedControl;
if (c.Name == "l")
e.Cancel = true; // <--- This is the culprit!
else
e.ToolTipSize = new Size(400, 100); // <--- This sems to have no effect when isBalloon == true.
}
}
Eh bien, si je pouvais voter votre réponse, je le ferais. Il dit que je n'ai pas encore assez de points de réputation. C'était une solution géniale! Pouvez-vous expliquer la nature de l'utilisation de BeginInvoke et comment cela fonctionne? J'ai essayé d'utiliser vos instructions IsBalloon sans le BeginInvoke, et naturellement, cela ne fonctionne pas. J'aimerais en savoir plus sur BeginInvoke afin de pouvoir l'utiliser dans d'autres endroits où je pourrais être coincé. – user1646737