为什么我的工具提示没有显示其提示?

时间:2012-09-28 16:40:38

标签: c# winforms tooltip linklabel

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

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

但是,我的工具提示是在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)); 
    }
}

...但我希望工具提示也能在悬停时显示,而不需要用户点击标签。

2 个答案:

答案 0 :(得分:4)

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

public Form1()
{
    InitializeComponent();

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

完成。

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

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

答案 1 :(得分:2)

你应该为Mouse Hover编写一个事件处理程序,并让你的工具提示显示逻辑。

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

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