2016-02-03 2 views
1

Я не добавлял никаких подсказок в элемент управления. Не в дизайнере не в коде. Но на некоторых элементах TreeView, когда я нажимаю мышь на элемент, я вижу, как окно окна подсказки названия элемента.Как отключить всплывающую подсказку из элемента управления 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, он покажет всплывающее сообщение с названием элемента?

+0

Ваше название говорит, что вы хотите, чтобы отключить его, но тело вопрос говорит, что вы хотите, чтобы отобразить его в некотором роде? – NikolaiDante

ответ

0

Чтобы отключить автоматическую всплывающую подсказку, вам необходимо добавить новый файл класса в проект с переопределяющим кодом следующим образом.

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; 
    } 
    } 
} 

Тогда вам нужно его построить. После этого у вас будет новый элемент управления, «MyToolTip» в панели инструментов.

Вам нужно просто изменить объявление в классе дизайнера использовать пользовательские подсказки:

this.tvFolders = new MyTreeView(); 

Чтобы ответить на ваши вопросы:

  1. управления TreeView по умолчанию автоматически добавляет всплывающую подсказку долго имена, которые не соответствуют границам элемента управления.
  2. Чтобы заставить всплывающую подсказку отображать на каждом элементе, вы можете просто использовать свойство Node.ToolTipText.

Источник: this на MSDN

Смежные вопросы