获取光标下的树节点
本文关键字:树节点 光标 获取 | 更新日期: 2023-09-27 18:24:29
基本上,我有一个填充了大量图像文件的树视图。我正试图让NodeMouseHover事件显示一个图像预览。要做到这一点,我需要找出鼠标在哪个节点上,但我无法让它工作,它无法在光标位置找到树节点。
这是我的代码的简化版本
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错误,或者两者兼而有之。
该事件的参数TreeNodeMouseHoverEventArgs
-已经具有所需的信息。
只需参考e.Node
即可查看鼠标当前悬停在哪个节点上。如果您没有将鼠标悬停在节点上,则不会触发事件,因此无需检查null。
private void TreeBroswer_NodeMouseHover(object sender, TreeNodeMouseHoverEventArgs e)
{
var preview = new PictureBox { ImageLocation = e.Node.FullPath };
// Display preview
}
问题在于中使用的参数
TreeBrowser.GetNodeAt(Cursor.Position.X, Cursor.Position.Y)
尝试更改为
treeView1.PointToClient(Cursor.Position)
或者使用TreeNodeMouseHoverEventArgs的参数
this.treeView1.GetNodeAt(e.X, e.Y);