1

我想为树视图中的每个项目和列表视图中的每个项目提供工具提示,并且列表视图中的每个子项目(即列)都不同。

我可以确定我想要显示的文本(使用当前鼠标位置的命中测试等):

private void toolTip1_Popup(object sender, PopupEventArgs e)
{
   if (e.AssociatedControl == listView1)
   {
      toolTip1.SetToolTip(listView1, "foo");
   }
}

但是任何设置工具提示文本的尝试都会导致stackoverflow

如何在工具提示(图标、标题、文本)出现之前对其进行自定义?

4

1 回答 1

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;
    }
}
于 2008-10-21T19:51:02.677 回答