基本上我有一个填充了大量图像文件的树视图。我试图让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错误,或两者都错。
答案 0 :(得分:3)
该事件的参数 - TreeNodeMouseHoverEventArgs
- 已经拥有您需要的信息。
只需引用e.Node
即可查看鼠标当前悬停在哪个节点上。如果您没有悬停在某个节点上,则该事件不会触发,因此无需检查是否为null。
private void TreeBroswer_NodeMouseHover(object sender, TreeNodeMouseHoverEventArgs e)
{
var preview = new PictureBox { ImageLocation = e.Node.FullPath };
// Display preview
}
答案 1 :(得分:0)
问题在于您在
中使用的参数TreeBrowser.GetNodeAt(Cursor.Position.X, Cursor.Position.Y)
尝试更改为
treeView1.PointToClient(Cursor.Position)
或使用 TreeNodeMouseHoverEventArgs
的参数this.treeView1.GetNodeAt(e.X, e.Y);