我有一个工具提示,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));
}
}
...但我希望工具提示也能在悬停时显示,而不需要用户点击标签。
答案 0 :(得分:4)
您只需要设置一次工具提示:
public Form1()
{
InitializeComponent();
toolTip1.SetToolTip(linkLabel1, "foo");
toolTip1.SetToolTip(linkLabel2, "bar");
}
完成。
在MouseHover
或MouseEnter
处理程序中执行此操作将在每次事件触发时反复调用此函数。它会起作用,但它不必要地复杂化。
您只需在表单上提供一个工具提示,即可为任意数量的组件提供提示,并且可以同时连续提供所有组件(即:您不必每次都更改或设置它)。每个组件只能有一个提示,但您可以随时在整个程序中更改它。 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