为啥我的 Tooltip 不显示其提示?

Posted

技术标签:

【中文标题】为啥我的 Tooltip 不显示其提示?【英文标题】:Why does my Tooltip not display its tip?为什么我的 Tooltip 不显示其提示? 【发布时间】:2012-09-28 16:40:37 【问题描述】:

我有一个 ShowAlways 属性设置为 true 的工具提示。

在我希望显示工具提示的控件(本例中为 LinkLabels)上,我看到有一个“<name of my Tooltip> 上的工具提示”属性,它需要一个字符串。

但是,我的工具提示在 5 个 LinkLabel 之间共享,并且应该根据悬停在哪一个上而有所不同。

我确实有一个有效的共享点击事件:

private void linkLabelPlatypus1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)

    int Platypus = 1;
    LinkLabel ll = null;
    if (sender is LinkLabel)
    
        ll = sender as LinkLabel;
    
    if (null != ll)
    
        if (ll.Name == linkLabelPlatypus2.Name)
        
            Platypus = 2;
         else if (ll.Name == linkLabelPlatypus3.Name)
        
            Platypus = 3;
         else if (ll.Name == linkLabelPlatypus4.Name)
        
            Platypus = 4;
         else if (ll.Name == linkLabelPlatypus5.Name)
        
            Platypus = 5;
        
        toolTipPlatypi.SetToolTip(ll, DuckbillData.GetPlatypusDataForToolTip(Platypus)); 
    

...但我希望工具提示也可以在悬停时显示,并且不需要用户单击标签。

【问题讨论】:

您可以使用 MouseEnter 和 MouseLeave 事件来显示和隐藏工具提示。 【参考方案1】:

您只需要设置一次工具提示:

public Form1()

    InitializeComponent();

    toolTip1.SetToolTip(linkLabel1, "foo");
    toolTip1.SetToolTip(linkLabel2, "bar");

完成。

MouseHoverMouseEnter 处理程序中执行此操作将在每次事件触发时反复调用此函数。它会起作用,但它是不必要的复杂。

您只需在表单上提供一个 ToolTip 即可为任意数量的组件提供提示,并且它可以同时连续地提供所有提示(即:您不必每次都更改或设置它)。每个组件只能有一个提示,但您可以在整个程序中随时更改它。 ShowAlways 不必为真 - 它用于在不活动的表单上显示工具提示(即:将鼠标悬停在具有焦点的窗口后面的非活动窗口上等)。

【讨论】:

但是如果我全部从 git-go 中设置,这意味着对数据库的四次调用,并且用户可能永远不会悬停,所以我认为工具提示的 JIT 设置更可取(在这种情况下;但这是一个很好的提示 - 不是双关语 - 对于工具提示的其他用法。 @ClayShannon - 如果您从数据库中获取提示(即:GetPlatypusDataForToolTip 是一个查询数据库的函数),那么它甚至是 更多 的原因将其置于悬停或输入处理程序中 - 每次鼠标越过或悬停在标签上时都会生成数据库调用!如果你想做 JIT,那么至少设置一些标志来确保你只做第一次——一旦设置了工具提示,就不需要再做一次了。【参考方案2】:

您应该为鼠标悬停编写一个事件处理程序,并在其中包含工具提示显示逻辑。

    private void Label1_MouseHover(object sender, System.EventArgs e) 
    
       //display logic
    

http://msdn.microsoft.com/en-us/library/system.windows.forms.control.mousehover.aspx

【讨论】:

啊,我在寻找“悬停”事件,但没有看到 MouseHover。我想我认为“鼠标”部分是多余的——我还能用什么悬停,直升机? 但是你不必在mouse_enter和mouse_leave这两个事件上写代码吗? 当您将鼠标从标签上移开时,工具提示如何消失

以上是关于为啥我的 Tooltip 不显示其提示?的主要内容,如果未能解决你的问题,请参考以下文章

为啥设置了pageX和pageY创建的提示框不会随着鼠标移动

WPF 文字换行TextWrapping 显示不全用省略号TextTrimming 显示不全弹提示内容ToolTip

为啥我的一些内联工具提示不对齐?

关于 echarts 使用 geo 制作地图 tooltip 不显示问题

2021-11-11el-tooltip提示不消失问题记录

js实现短暂提示框