2013-07-24 7 views
0

В принципе у меня есть дерево, заполненное многочисленными файлами изображений. Я пытаюсь сделать событие NodeMouseHover, чтобы получить небольшой предварительный просмотр изображения. Для этого мне нужно выяснить, на каком узле мышь закончилась, но я не могу заставить его работать, он не может найти узел дерева в позиции курсора.получить treenode под курсором

Вот упрощенная версия мой код

private void TreeBroswer_NodeMouseHover(object sender, TreeNodeMouseHoverEventArgs e) 
    { 
     string filePath; 
     PictureBox preview; 

     TreeNode test = TreeBroswer.GetNodeAt(Cursor.Position.X, Cursor.Position.Y); 
     //Also tried MousePosition.X,MousePosition.Y 

     if (test == null) 
     { 
      MessageBox.Show("No tree node"); 
     } 
     else 
     { 
      filePath = test.FullPath; 
      preview = new PictureBox(); 
      preview.ImageLocation = @filePath; 
      // Display preview 
     } 
    } 

Это не может не получить узел дерева, независимо от того, где моя мышь. Я не уверен, неправильно ли я ошибаюсь, или я неправильно использую GetNodeAt, или и то, и другое.

ответ

2

Параметр для этого событие - TreeNodeMouseHoverEventArgs - уже есть необходимую вам информацию.

Только ссылка e.Node, чтобы узнать, на каком узле мышь в настоящее время витает. Если вы не нависаете над узлом, событие не срабатывает, поэтому нет необходимости проверять значение null.

private void TreeBroswer_NodeMouseHover(object sender, TreeNodeMouseHoverEventArgs e) 
{ 
    var preview = new PictureBox { ImageLocation = e.Node.FullPath }; 
    // Display preview 
} 
0

Проблема заключается в аргументы, которые вы используете в Try Change

TreeBrowser.GetNodeAt(Cursor.Position.X, Cursor.Position.Y) 

в

treeView1.PointToClient(Cursor.Position) 

Или используя аргументы TreeNodeMouseHoverEventArgs

this.treeView1.GetNodeAt(e.X, e.Y); 
+1

Я был в состоянии заставить его работать так, используя: тест TreeNode = TreeBroswer.GetNodeAt (TreeBroswer.PointToClient (Cursor.Position)); – Crispy

+0

Что говорит @Crispy, важно. Вам нужно сделать преобразование PointToClient, и ни один из ответов не упоминает об этом. – user2867342

+0

это было какое-то время, но мой ответ 'treeView1' =' treeBrowser' и упомянул конверсию «PointToClient». – Turbot

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