C# 工具提示IsBalloon cancel会弄乱下一个打开的引出序号的大小

C# 工具提示IsBalloon cancel会弄乱下一个打开的引出序号的大小,c#,tooltip,balloon,C#,Tooltip,Balloon,我一直在试图找出我的气球尺寸改变的原因,结果是气球中的文字被裁剪了。我认为这与为控件重新设置提示文本有关。不。原来是取消了popOpen。一旦取消,将对下一个要打开的引出序号产生不利影响 有人对工作有什么好主意吗 下面是代码:(要复制bug,请运行它,然后将鼠标移到l3上,然后是l2,然后是l,然后是l3-按顺序) 公共部分类表单7:表单 { 专用标签l、l2、l3; 公共表格7() { 初始化组件(); toolTip1.IsBalloon=true; toolTip1.Popup+=新的Po

我一直在试图找出我的气球尺寸改变的原因,结果是气球中的文字被裁剪了。我认为这与为控件重新设置提示文本有关。不。原来是取消了popOpen。一旦取消,将对下一个要打开的引出序号产生不利影响

有人对工作有什么好主意吗

下面是代码:(要复制bug,请运行它,然后将鼠标移到l3上,然后是l2,然后是l,然后是l3-按顺序)

公共部分类表单7:表单
{
专用标签l、l2、l3;
公共表格7()
{
初始化组件();
toolTip1.IsBalloon=true;
toolTip1.Popup+=新的PopupEventHandler(toolTip1\u Popup);
l=新标签();
l、 Name=“l”;
l、 Text=“标签1”;
l、 Top=100;
l、 左=100;
l2=新标签();
l2.Name=“l2”;
l2.Text=“标签2”;
l2.Top=150;
l2.左=100;
l3=新标签();
l3.Name=“l3”;
l3.Text=“标签3”;
l3.顶部=200;
l3.左=100;
本.控件.添加(l);
this.Controls.Add(l2);
this.Controls.Add(l3);
工具提示1.设置工具提示(l,“你好”);
工具提示1.设置工具提示(l2,“这更长。”);
工具提示1.设置工具提示(l3,“这甚至比标签2还要长”);
}
无效工具提示1_弹出窗口(对象发送者,PopupEventArgs e)
{
控制c=e.关联控制;
如果(c.Name==“l”)

e、 Cancel=true;//唉,那些讨厌的工具提示错误。至少部分原因似乎是本机Windows控件实际上不支持取消弹出。Winforms通过将工具提示窗口大小设置为0 x 0像素来模拟它。这似乎会影响下一次弹出的结果,它似乎会生成一个的值是根据0 x 0的大小计算的,并假设文本应该被包装。但实际上并不包装文本

解决此问题的一种方法是在取消后重击本机控件,使其无法记住大小。这一方法有效:

   if (c.Name == "l") {
       e.Cancel = true;
       this.BeginInvoke(new Action(() => {
           toolTip1.IsBalloon = !toolTip1.IsBalloon;
           toolTip1.IsBalloon = !toolTip1.IsBalloon;
       }));
   }

好吧,如果我能投票支持你的答案,我会的。它说我还没有足够的声望点。这是一个很好的解决方案!你能解释一下使用BeginInvoke的本质以及它是如何运作的吗?我试着使用你的!IsBalloon语句而不使用BeginInvoke,当然,它不起作用。我想知道更多关于这一点eginInvoke,这样我就可以在我可能被卡住的其他地方使用它。
   if (c.Name == "l") {
       e.Cancel = true;
       this.BeginInvoke(new Action(() => {
           toolTip1.IsBalloon = !toolTip1.IsBalloon;
           toolTip1.IsBalloon = !toolTip1.IsBalloon;
       }));
   }