如何从树视图控件禁用工具提示
本文关键字:工具提示 控件 视图 | 更新日期: 2023-09-27 18:33:03
我没有向控件添加任何工具提示。不在设计器中,不在代码中。但是在 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, "");
我确实想在将鼠标移到树视图(tvFolder)中的项目上时,它将显示一条工具提示消息。
为什么它在某些项目工具提示消息上显示而我没有添加任何?
当我将鼠标移到
TreeView
中的项目上时,它会显示一条带有项目名称的工具提示消息,如何做到这一点?
若要禁用自动工具提示,需要使用重写代码向项目添加新的类文件,如下所示。
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"控件可供使用。
只需更改设计器类中的声明即可使用自定义树视图:
this.tvFolders = new MyTreeView();
要回答您的问题:
- 默认情况下,树视图控件会自动为不适合控件边界的长名称添加工具提示。
- 若要强制工具提示显示在每个项上,只需使用 Node.ToolTipText 属性即可。
来源:MSDN上的这个