我想为树视图中的每个项目以及列表视图中的每个项目提供工具提示,并且列表视图中的每个子项目(即列)都有不同的工具提示。
我可以确定我想要显示的文本(使用当前鼠标位置的命中测试等):
private void toolTip1_Popup(object sender, PopupEventArgs e)
{
if (e.AssociatedControl == listView1)
{
toolTip1.SetToolTip(listView1, "foo");
}
}
但是,任何设置工具提示文字的尝试都会导致stackoverflow。
如何在出现之前自定义工具提示(图标,标题,文字)?
答案 0 :(得分:2)
您需要在Popup
事件处理程序中保护您的代码,这样如果您从其中调用SetToolTip
,则不会再次调用SetToolTip
。
类似的东西:
private bool updatingTooltip;
private void toolTip1_Popup(object sender, PopupEventArgs e)
{
if (!this.updatingTooltip && (e.AssociatedControl == listView1))
{
this.updatingTooltip = true;
toolTip1.SetToolTip(listView1, "foo");
this.updatingTooltip = false;
}
}