1

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

在我希望显示工具提示的控件上(在本例中为 LinkLabels),我看到有一个“ToolTip on <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)); 
    }
}

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

4

2 回答 2

4

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

public Form1()
{
    InitializeComponent();

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

完毕。

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

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

于 2012-09-28T17:03:33.170 回答
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

于 2012-09-28T16:53:31.667 回答