多次在ListView上调用SetToolTip,根本不显示工具提示

时间:2014-01-01 12:55:24

标签: c# .net winforms listview tooltip

我正在尝试使用Tooltip类在鼠标移动到listview子项目时显示自定义详细信息。为了做到这一点,我使用this question中提到的方法。基本上,它在鼠标下找到子项并为listview设置工具提示。

但我无法使其发挥作用。我发现如果我多次在列表视图上调用tooltip.SetToolTip方法,则根本不会出现工具提示。

为了演示这一点,我只需创建一个Windows窗体应用程序并删除一个列表视图和一个工具提示控件。在show event事件中,我写道:

private void Form1_Shown(object sender, EventArgs e)
{
    toolTip1.SetToolTip(listView1, "Hello World");
    toolTip1.SetToolTip(listView1, "Hello");
}

当我在上面做的时候,根本没有显示任何工具提示。当我评论其中一条线时,它工作得很好。我不知道我做错了什么。

2 个答案:

答案 0 :(得分:1)

这似乎是框架中的错误。 一旦您使用tooltip1.SetTooltip(listView1,“ Text”)两次,整个ToolTip控件就会损坏,并且不再显示与此工具提示相关联的任何工具提示。 对我来说,唯一的解决方案是在重新分配工具提示之前重新初始化它

toolTip1.SetToolTip(listView1, "Text");
toolTip1 = new ToolTip();
toolTip1.SetToolTip(listView1, "New Text");

这仅适用于ListViews!例如标签,按钮等,您可以反复使用SetToolTip。

答案 1 :(得分:0)

如果要在列表视图的每个项目上显示工具提示文本,可以使用以下代码。

private void FillListView()
{
    listView1.ShowItemToolTips = true;

    ListViewItem item1 = new ListViewItem("Item 1");
    item1.ToolTipText = item1.Text;
    listView1.Items.Add(item1);

    ListViewItem item2 = new ListViewItem("Item 2");
    item2.ToolTipText = item2.Text;
    listView1.Items.Add(item2);

    ListViewItem item3 = new ListViewItem("Item 3");
    item3.ToolTipText = item3.Text;
    listView1.Items.Add(item3);
}

或者您可以迭代listview项目并将listviewItems的工具提示文本设置为 -

 listView1.ShowItemToolTips = true;

 foreach (ListViewItem listViewItem in listView1.Items)
  {
        listViewItem.ToolTipText = listViewItem.Text;
  }  

enter image description here