如何禁用TreeView控件中的工具提示?

3

我没有在控件上添加工具提示,无论是在设计器中还是在代码中都没有。 但是当我将鼠标悬停在TreeView的某些项上时,会出现一个类似于项目名称的工具提示窗口消息。

不知道为什么有些项目会有工具提示。

我在设计器中注册的TreeView控件唯一的事件是AfterSelect。

private void tvFolders_AfterSelect(object sender, System.Windows.Forms.TreeViewEventArgs e)
{
    //Populate folders and files when a folder is selected
    this.Cursor = Cursors.WaitCursor;

    //get current selected drive or folder
    TreeNode nodeCurrent = e.Node;

    //clear all sub-folders
    nodeCurrent.Nodes.Clear();

    if (nodeCurrent.SelectedImageIndex == 0) 
    {
        //Selected My Computer - repopulate drive list
        PopulateDriveList();
    }
    else 
    {
        //populate sub-folders and folder files
        PopulateDirectory(nodeCurrent, nodeCurrent.Nodes);
    }
    this.Cursor = Cursors.Default;
}

在设计师中。
this.tvFolders.Dock = System.Windows.Forms.DockStyle.Left;
this.tvFolders.ImageIndex = 0;
this.tvFolders.ImageList = this.m_imageListTreeView;
this.tvFolders.Location = new System.Drawing.Point(0, 0);
this.tvFolders.Name = "tvFolders";
this.tvFolders.SelectedImageIndex = 0;
this.tvFolders.Size = new System.Drawing.Size(168, 357);
this.tvFolders.TabIndex = 2;
this.tvFolders.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.tvFolders_AfterSelect);
// 
// m_imageListTreeView
// 
this.m_imageListTreeView.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("m_imageListTreeView.ImageStream")));
this.m_imageListTreeView.TransparentColor = System.Drawing.Color.Transparent;
this.m_imageListTreeView.Images.SetKeyName(0, "");
this.m_imageListTreeView.Images.SetKeyName(1, "");
this.m_imageListTreeView.Images.SetKeyName(2, "");
this.m_imageListTreeView.Images.SetKeyName(3, "");
this.m_imageListTreeView.Images.SetKeyName(4, "");
this.m_imageListTreeView.Images.SetKeyName(5, "");
this.m_imageListTreeView.Images.SetKeyName(6, "");
this.m_imageListTreeView.Images.SetKeyName(7, "");
this.m_imageListTreeView.Images.SetKeyName(8, "");

我希望当我将鼠标移动到TreeView(tvFolders)中的项目上时,它会显示一个工具提示消息。

  1. 为什么有些项目会显示工具提示消息而我没有添加任何内容?

  2. 如何使当我将鼠标移到TreeView中的项目上时,它会显示一个带有项目名称的工具提示消息?


你的标题说你想要禁用它,但问题正文又说你想以某种方式显示它? - NikolaiDante
1个回答

3
要禁用自动工具提示,您需要向项目中添加一个新的类文件,并添加以下覆盖代码。
using System.Windows.Forms; 

public class MyTreeView : TreeView { 
  protected override CreateParams CreateParams { 
    get { 
      CreateParams parms = base.CreateParams; 
      parms.Style |= 0x80;  // Turn on TVS_NOTOOLTIPS 
      return parms; 
    } 
  } 
} 

接下来您需要构建它。完成后,您将在工具箱中拥有一个新的控件,“MyTreeView”控件可供使用。

您只需更改设计类中的声明以使用自定义TreeView即可:

this.tvFolders = new MyTreeView();

回答你的问题:
  1. treeview控件默认会自动为长度超出控件边界的长名称添加工具提示。
  2. 要强制在每个项上显示工具提示,只需使用Node.ToolTipText属性即可。
来源:MSDN上的此帖子

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接