none
【TreeView控件】鼠标移动到TreeNode上时的NodeToolTips显示问题 RRS feed

  • 问题

  • 你好

    使用TreeView控件时,发现了非常奇怪的问题。

    【需求】

    鼠标光标移到到TreeView的节点(TreeNode)时,根据TreeNode的Text文字数显示该节点的ToolTips。

    ToolTips内容为Node的Text内容,Text文字数过多导致出现横向滚轮时即显示ToolTips。

    【实现方法1】

    只把TreeView控件的ShowNodeToolTips设置为True,节点的TooltipText显示默认的节点内容,所以这里不格外设置

    【问题1】

    没有达到预期的效果,文字数非常多时,才会显示Tooltips。这里Tooltips的默认显示规则能给说明一下吗?

    感觉这块儿的功能很不稳定,是不是有bug啊?

    【实现方法2】

    设置TreeView的NodeMouseHover事件,TooptipText为Node内容,并设置ShowNodeTooltips为True。

    【问题2】

    没有达到预期的效果,无论Node文字数多少,无论有没有滚轮,每个节点的TooptipText都会表示。

    谢谢了

    2020年11月9日 9:13

全部回复

  • Hi,

    经过我的测试,我发现我并没有重现你的问题,不管文本多还是少,我的tooltip都能正常显示。

    下面是我的测试代码:

    private void Form1_Load(object sender, EventArgs e)
            {
                treeView1.BeginUpdate();
                treeView1.Nodes.Add("Parent1");
                treeView1.Nodes[0].ToolTipText = treeView1.Nodes[0].Text;
                treeView1.Nodes[0].Nodes.Add("Child 1");
                treeView1.Nodes[0].Nodes.Add("Child 2");
                treeView1.Nodes[0].Nodes[1].Nodes.Add("Grandchild");
                treeView1.Nodes[0].Nodes[1].Nodes[0].Nodes.Add("Great Grandchild");
                treeView1.ShowNodeToolTips = true;
                treeView1.EndUpdate();
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                treeView1.BeginUpdate();
                treeView1.Nodes[0].Text = textBox1.Text;
                treeView1.Nodes[0].ToolTipText = treeView1.Nodes[0].Text;
                treeView1.EndUpdate();
    
            }

    示例结果:

    Best Regards,

    Jack


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2020年11月11日 6:27
    版主
  • 你好,多谢回复

    能否按【实现方法1】那样试试呢?

    不在Load方法中定义TooltipText和ShowNodeToolTips,

    在Form设计界面只把TreeView控件的ShowNodeToolTips设置为True,节点的TooltipText不设置内容

    谢谢了

    2020年11月11日 7:36
  • Hi,

    感谢您的反馈。

    这样的确不能显示Tooltiptext, 但是如果我们需要显示TooltipText就必须去设置它的内容,不管是在代码中还是在前台的设计中。

    以下是TooltipText的定义,当中并没有特别说明在不设置Tooltiptext会默认显示文本。

    TreeNode.ToolTipText Property

    我也测试过了,即使文本很多,如果没有设置Tooltiptext的具体内容,它也不会显示。

    通常而言,我建议你用代码去实现TooltipText的文本。

    Best Regards,

    Jack


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2020年11月11日 8:06
    版主
  • Hi,

    谢谢回复。

    确实如您所说,.NET API上对于ToolTipText并没有特别说明在不设置Tooltiptext会默认显示文本。

    但是这里的现象确实比较奇怪,刚才我又试了一下,即使ShowNodeToolTips设置为False时,

    将Node的Text内容设置的足够足够大,也会出ToolTipText。

    当横向滚轮移到到最后接近最右侧时,也就是Node内容即将表示完全的时候,就不会再出ToolTipText了。

    您可以再试一下,我也写了一个demo,怎么发给您呢?

    谢谢

    2020年11月11日 8:28
  • Hi ,

    您可以将你的项目上传到onedrive或者github上面,然后把链接发在这里。

    注意:请在您的项目上删除您的隐私信息。

    Best Regards,

    Jack


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2020年11月11日 8:33
    版主
  • Hi,

    其实也没有特别的代码,我先给您截个图,您按我这个图试试。

    • 添加一个TreeView控件,宽度不要太宽
    • 创建节点,节点1的Text设置为节点1111111111111111111111111111111111111111111111111111111111
    • 启动程序

    2020年11月11日 8:39
  • Hi,

    你好,重现截图中的问题了吗?

    2020年11月12日 8:35
  • Hi,

    抱歉,迟来的回复。

    根据我的测试,我依然不能重现你的问题,下面是我的一些测试图片。

    这可能是vs的版本问题,我建议你可以更新你的vs版本到最新版本。

    如果最新版本仍然有问题,我建议你可以到下面的网址进行询问来获得更好的支持。

    Developer Community

    Best Regards,

    Jack


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2020年11月13日 8:53
    版主
  • Hi,多谢回复

    我用最新的VS2019专业版和.NET Framework 4.7.2测试有同样的问题。

    你之所以没重现,是因为你TreeView控件的宽度太大了,Node1节点的内容相对就少了。

    把TreeView控件的宽度调的尽可能小一点,让横线滚轮的范围大一些,试试可以吗?

    谢谢

    2020年11月16日 0:42
  • Hi, 感谢反馈

    经过我的再次测试,正如你所说,当Treeview控件的宽度较小,的确会出现即使不设置ShowNodeToolTips为true也显示Tooltip的文本,这可能是winform的设计问题。

    最后,还是按照我上面的回复,你可以去 Developer Community 去报告一个问题。

    Best Regards,

    Jack


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.



    2020年11月16日 6:37
    版主
  • HI,

    回复收到,谢谢了。

    Developer Community 会有微软的人给认定这是WinForm的设计问题吗?

    2020年11月16日 6:54
  • Hi,

    你先将你的问题报告上去,如果他们也重现你的问题,应该会有相关人员会去解决这个问题的。

    我也不太确定是不是winform的设计问题,需要那边的人进一步的研究。

    Best Regards,

    Jack


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2020年11月16日 6:58
    版主