作者:低调pasta_730 | 2023-08-30 15:14
我有一个Windows Forms C#应用程序,我想在其中一个文本框上使用工具提示.我在Form类的构造函数中初始化工具提示,它第一次工作.因此,当我用鼠标将鼠标悬停在文本框上时,它可以工作,但是一旦工具提示超时并且它消失,当我将鼠标移开并返回到控件上时,它不会重新出现.我希望它会回来.我究竟做错了什么?
以下是我初始化工具提示的方法:
myTip = new ToolTip();
myTip.ToolTipIcon = ToolTipIcon.Info;
myTip.IsBalloon = true;
myTip.ShowAlways = true;
myTip.SetToolTip(txtMyTextBox,"My Tooltip Text");
Kevin Doyon..
23
我今天遇到了类似的问题.有时,工具提示不会显示.我有一个ToolTip控件用于表单中的所有控件.
我还自动添加了所有控件上的MouseEnter事件,因此我修改了MouseEnter事件:
_tooltip.Active = false;
_tooltip.Active = true;
它修复了这个bug,但我不知道为什么.
此外,该错误始终发生在Windows XP计算机上,但不发生在Windows Vista上.
1> Kevin Doyon..: 我今天遇到了类似的问题.有时,工具提示不会显示.我有一个ToolTip控件用于表单中的所有控件.
我还自动添加了所有控件上的MouseEnter事件,因此我修改了MouseEnter事件:
_tooltip.Active = false;
_tooltip.Active = true;
它修复了这个bug,但我不知道为什么.
此外,该错误始终发生在Windows XP计算机上,但不发生在Windows Vista上.
是的 - 我在XP机器上也有这个问题,但Vista没有
这非常有效.为了避免手动事件挂钩,您可以使用foreach(Control.Controls.OfType
()中的var标签)标签等代码.MouseEnter + =(s,ea)=> {Main_Tooltip.Active = false; Main_Tooltip.Active = true; }; 另请参阅http://stackoverflow.com/questions/1788490/c-how-can-i-iterate-through-all-checkboxes-on-a-form/1788757#1788757 2> user276648..: 我想你会很高兴知道微软知道它...大约5年......
2/21/2005 Bug被认为是可重现的
2005年3月29日我们可以解决它,但后来......
2005年11月15日实际上这不是一个大错误,并没有发生太多,所以我们不会解决它.
该死的我喜欢它,当我偶然发现微软不想解决的错误!这次它被称为角落案例 ,上次很难解决 ......
http://connect.microsoft.com/VisualStudio/feedback/details/115385/tooltip-stop-showing-after-autopopdelay
我要告诉我的客户我的程序中的错误只是极端情况而且难以解决......
3> 小智..: 我今天遇到了类似的问题.VS 2010 SP1 .Net 3.5
AutoPopDelay-Time后,工具提示不显示控件ToolTipText
.
Kevins解决方案是解决问题的唯一方法.
我将它封装在我自己的ToolTip类中:
public class ToolTip : System.Windows.Forms.ToolTip
{
public ToolTip() : base() { }
public ToolTip(System.ComponentModel.IContainer components) : base(components) { }
public new void SetToolTip(System.Windows.Forms.Control ctl, string caption)
{
ctl.MouseEnter -= new System.EventHandler(toolTip_MouseEnter);
base.SetToolTip(ctl, caption);
if(caption != string.Empty)
ctl.MouseEnter += new System.EventHandler(toolTip_MouseEnter);
}
private void toolTip_MouseEnter(object sender, EventArgs e)
{
this.Active = false;
this.Active = true;
}
}
4> HardCode..: 我在VB.NET中遇到过这个问题.我做的是在窗体上放置一个TooTip控件,然后在目标控件的MouseHover事件上,我设置了ToolTip的属性.我这样做是因为我使用了一个ToolTip控件来实现五个不同的Label控件.它运作得很好.(实际上,我希望工具提示能够立即显示,所以我使用了MouseEnter事件.)我明天可以在工作时发布我的确切代码.