【问题标题】:How to change ToolTip's position on a TreeView?如何更改工具提示在 TreeView 上的位置?
【发布时间】:2008-10-02 14:41:09
【问题描述】:

当使用工具提示来显示 TreeNode 的详细描述时,工具提示会绘制在节点的顶部,就好像它正在完成节点的文本一样。此外,如果文本很长,则工具提示的位置会使得文本超出屏幕

但我需要的是显示在鼠标指针正下方而不是 TreeNode 顶部的工具提示。

知道怎么做吗?


显示,不告诉:

怎么样:

我想要的:

【问题讨论】:

    标签: c# .net winforms treeview tooltip


    【解决方案1】:

    我没有找到我正在寻找的答案,但我以某种方式让它按我想要的方式工作。

    之前,我试图按如下方式设置工具提示:

        private void treeView1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
        {
            TreeNode node = treeView1.GetNodeAt(e.X, e.Y);
            if (node != null)
            {
                    string text = GetNodeTooltip(node);
                    string currentText = toolTip1.GetToolTip(treeView1);
    
                    if (text.Equals(currentText) == false)
                    {
                        toolTip1.SetToolTip(treeView1, text);
                    }
                }
                else
                {
                    toolTip1.SetToolTip(tree, string.Empty);
                }
            }
            else
            {
                toolTip1.SetToolTip(tree, string.Empty);
            }
        }
    

    现在,我只创建treeView1.ShowNodeToolTips=true,当我创建每个节点时,我只需将其TreeNode.ToolTipText 值设置为所需的文本。

    【讨论】:

      【解决方案2】:
      private ToolTip toolTipController = new ToolTip() { UseFading = false,UseAnimation = false};
      
      protected override void OnMouseMove(MouseEventArgs e)
      {
          var node = GetNodeAt(e.X, e.Y);
          if (node != null)
          {
              var text = node.Text;
      
              if (!text.Equals(toolTipController.GetToolTip(this)))
              {
                  toolTipController.Show(text, this, e.Location, 2000);
              }
          }
          else
          {
              toolTipController.RemoveAll();
          }
      }
      

      【讨论】:

        【解决方案3】:

        您需要为 TreeView 定义一个 ToolTip 并编写一个 MouseOverEventHandler。在 MouseOverEventHandler 中计算鼠标所在的节点,然后显示描述 ToolTip。还要确保您没有多次设置工具提示描述,否则行为会很丑陋。

        更好的方法是在表单左下角的 StatusStrip 中显示描述。

        更新:

        好的,因为你已经澄清了你的问题。您可以使用ToolTip.Show 方法指定坐标:

        public void Show(
            string text,
            IWin32Window window,
            int x,
            int y,
            int duration
        )
        

        显然,您必须为 x 和 y 添加偏移量。

        【讨论】:

        • 不是我想要的。实际上我已经这样做了(在 MonseMove 上为每个节点设置工具提示文本)。我需要的是防止工具提示表单显示在节点顶部,就好像它正在完成节点的文本一样。
        猜你喜欢
        • 1970-01-01
        • 2015-01-03
        • 2017-02-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-30
        • 1970-01-01
        • 2023-03-09
        相关资源
        最近更新 更多