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

时间:2010-07-15 22:50:50

标签: vb.net events treeview look-and-feel treenode

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

我试图使用此函数循环遍历节点并根据游标的Point属性检查TreeNode的Bounds属性,但到目前为止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数组的外观。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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