当鼠标悬停在TreeNode上时,如何更改光标?

问题描述:

我已经创建了一个菜单,使用树视图来启动表单,当用户点击一个节点。为了完成外观,我将节点设置为超链接。当用户悬停在一个节点上时,我希望将光标变成一只手(就像您将鼠标悬停在链接上时看到的那只手一样),但是到目前为止,我只能够在悬停在内部时更改光标树视图,而不是一个节点。据我所知,TreeNode没有像MouseEnter这样的事件,所以我不能让它们自己处理事件。当鼠标悬停在TreeNode上时,如何更改光标?

我试图使用这个函数来遍历节点,并检查TreeNode的Bounds属性和光标的Point属性,但到目前为止If块总是计算为false,这意味着光标不会改变。

Private Sub uxNavigationTreeView_MouseHover(ByVal sender As Object, ByVal e As System.EventArgs) Handles uxNavigationTreeView.MouseHover 
    For Each node As TreeNode In uxNavigationTreeView.Nodes 
     For Each child As TreeNode In node.Nodes 
      If child.Bounds.IntersectsWith(New Rectangle(Cursor.Position, New Size(1, 1))) Then 
       Me.Cursor = Cursors.Hand 
      End If 
     Next 
    Next 
End Sub 

我希望有人能指出我在正确的方向来实现这一目标。实质上,我正在寻找嵌套的LinkBut​​ton数组的外观。

使用MouseMove事件。调用HitTest()方法。

+0

事件没有解除。 – 2010-07-16 16:13:08

+0

你有一个不会引发MouseMove事件的控件?放弃所有希望。 – 2010-07-16 16:19:58

+0

对不起,正在使用错误的MouseMove事件。这真的很好。谢谢。 – 2010-07-16 16:25:56

Cursor.Position返回鼠标指针在屏幕坐标中的位置 - 使用uxNavigationTreeView。 PointToClient将位置转换为客户端坐标,我想你会有更多的运气。

+0

明天我会出手。当天下班。谢谢。 – 2010-07-16 00:00:27