C#标签工具提示显示多次

问题描述:

我认为我有一个不寻常的问题,关于工具提示的很多问题是:为什么不显示,或为什么不多次。 但是,我的问题是,当我将鼠标悬停在我的工具提示标签上时,如果我将鼠标缓慢移动到每个像素显示的标签上,工具提示会显示多次。 我试过类似:ToolTip1.ReshowDelay = 500; 但这似乎没有任何效果。 我也尝试过使用label1_MouseEnterlabel1_MouseLeave,但无法让它工作。C#标签工具提示显示多次

我希望有人能帮助我

这是它都有发生代码::)

private void label1_Hover(object sender, EventArgs e) 
    { 
     //Enter Help box texboxes 
     System.Windows.Forms.ToolTip ToolTip1 = new System.Windows.Forms.ToolTip(); 
     ToolTip1.ShowAlways = true; 
     ToolTip1.Show("Enter the Drive letter in the first textbox" + "\n" + "Enter the submap in the second textbox", label1); 
    } 
+0

为什么你需要在悬停时做到这一点?它正在做它应该做的事 – MSI

+0

只需设置标签控件的工具提示属性,如果您使用的是asp:标签 – MSI

+0

否当我将鼠标放在标签上时,工具提示显示为2或3次,或者当我慢慢移动时在标签上,它会传播工具提示框。所以它一次只能显示1个。 – TaurusFire

通过使用悬停事件处理程序创建工具提示,你造成每当用户将鼠标悬停在标签上时,都会创建一个新的ToolTip对象并将其与标签关联。您会注意到第一次将鼠标悬停在其上时,您会看到一个工具提示,但随后的移动将创建更多工具提示。

与在标签的悬停事件中创建工具提示不同,您可以在创建表单时简单创建一次。方法SetToolTip()将使工具提示与提供的控件相关联,并且将表现为正常的工具提示(仅当用户悬停在控件上时才显示)。

例如,你可以在窗体的构造函数中调用SetToolTip()

public Form1() 
    { 
     InitializeComponent(); 

     new ToolTip().SetToolTip(label1, "Enter the Drive letter in the first textbox" + "\n" + "Enter the submap in the second textbox"); 
    } 

或者,您可以创建窗体的Load事件处理程序的提示。

+0

噢,得到它,真棒,设置它在这样的形式后,我用:ToolTip1.Show(“”,label1);在labe1_hover和它的工作,thansk! – TaurusFire

+0

您可以完全移除label1_hover事件处理程序。当用户将鼠标悬停在您在方法调用中指定的控件上时,SetToolTip()会自动使工具提示出现。 – Gage

+0

真棒,谢谢;) – TaurusFire