В принципе у меня есть дерево, заполненное многочисленными файлами изображений. Я пытаюсь сделать событие 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, или и то, и другое.
Я был в состоянии заставить его работать так, используя: тест TreeNode = TreeBroswer.GetNodeAt (TreeBroswer.PointToClient (Cursor.Position)); – Crispy
Что говорит @Crispy, важно. Вам нужно сделать преобразование PointToClient, и ни один из ответов не упоминает об этом. – user2867342
это было какое-то время, но мой ответ 'treeView1' =' treeBrowser' и упомянул конверсию «PointToClient». – Turbot