1

当用户单击节点时,我使用树视图创建了一个菜单来启动表单。为了完成外观,我将节点设置为看起来像超链接。当用户将鼠标悬停在节点上时,我希望将光标更改为一只手(就像您将鼠标悬停在链接上时看到的那样),但是到目前为止,我只能在鼠标悬停时更改光标树视图,而不是在一个节点上。据我所知,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 数组的外观。

4

2 回答 2

1

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

于 2010-07-15T23:01:55.937 回答
1

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

于 2010-07-16T00:16:52.913 回答