【问题标题】:How can i disable the tooltip from the TreeView control?如何从 TreeView 控件禁用工具提示?
【发布时间】:2021-04-01 10:12:08
【问题描述】:

我没有向控件添加任何工具提示。不在设计器中,不在代码中。 但是在 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 中的一个项目上时,它会显示一个带有项目名称的工具提示消息?

【问题讨论】:

  • 你的标题说你想禁用它,但问题正文说你想以某种方式显示它?

标签: c# .net winforms


【解决方案1】:

要禁用自动工具提示,您需要在项目中添加一个新的类文件,并使用如下覆盖代码。

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. 默认情况下,树视图控件会自动为超出控件边界的长名称添加工具提示。
  2. 要强制工具提示显示在每个项目上,您只需使用 Node.ToolTipText 属性即可。

来源:MSDN 上的this

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-03
    • 2018-07-31
    相关资源
    最近更新 更多