【问题标题】:Tooltip showing twice工具提示显示两次
【发布时间】:2013-04-24 19:57:35
【问题描述】:

我在某个按钮的MouseHover 事件上显示ToolTip。如果我在它工作后检查它,但如果我离开,请等待工具提示消失并返回按钮,它会出现两次。我尝试在 MouseLeave 上取消它,但它仍然出现两倍的 seocnd 时间。

Private Sub someButton_MouseHover(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles someButton.MouseHover

   Dim tooltipSearch As New ToolTip()
   tooltipSearch.Show("I'm a tooltip"), someButton)

End Sub

 Private Sub someButton_MouseLeave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles someButton.MouseLeave

    Dim toolTip As New ToolTip()
    toolTip.GetToolTip(someButton)
    toolTip.Hide(someButton)
    toolTip.Dispose()

End Sub

我是否遗漏了一些明显的东西?

【问题讨论】:

  • 您以错误的方式使用工具提示。您应该再次阅读documentation ;)。我还建议您将工具提示拖到表单上,就像任何其他控件一样。
  • 哦,我一直这样用它...我确实应该阅读文档。
  • @Styxxy 我像另一个控件一样拖动它,它现在可以工作了。你可以制定和回答并解释我不应该使用这样的工具提示,所以我可以接受它。谢谢

标签: vb.net winforms tooltip mousehover


【解决方案1】:

您正在使用 ToolTip 而不是它应该使用的方式(另请查看 documentation :))。它就像任何其他控件一样,首先将其拖到您的表单上(就像您使用其他控件一样)。

如果您的工具提示中没有要显示的动态文本,您可以使用 SetToolTip 方法轻松地在构造函数中设置文本。如果您确实需要一些动态文本,可以在 MouseHover 事件中使用此方法。

除此之外,您不应该做任何其他事情。只需在您的工具提示上设置正确的延迟,它应该可以正常工作。

【讨论】:

    【解决方案2】:
    Private Sub someButton_MouseHover(sender As Object, e As System.EventArgs) _
                                      Handles someButton.MouseHover
      ToolTip1.SetToolTip(someButton, "My name is Steve chamba from south Africa")
    End Sub
    

    【讨论】:

    • 嗨,史蒂夫,欢迎来到 Stack Overflow。如果您能提供更多详细信息来说明它的工作原理,那就太好了——这有助于其他人弄清楚出了什么问题以及如何不做某事。请问你可以这样做吗?谢谢!
    【解决方案3】:

    关于将 ToolTip 控件拖到窗体的答案很棒。不过,Button 控件有一个微妙之处。它们似乎会自动将工具提示设置为按钮的文本,因此如果您还调用ToolTip1.SetToolTip(myButton, "Button Text"),那么当您将鼠标悬停在按钮上时,dot-net 会绘制工具提示文本的两个副本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多