【问题标题】:How can I make a TreeNode change the cursor when the mouse hovers over it?当鼠标悬停在 TreeNode 上时,如何让 TreeNode 更改光标?
【发布时间】:2010-07-15 22:50:49
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 您有一个不会引发 MouseMove 事件的控件?放弃所有希望。
    • 抱歉,使用了错误的 MouseMove 事件。这真的很好。谢谢。
    【解决方案2】:

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

    【讨论】:

    • 明天我会试一试。当天下班。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-14
    • 2020-06-04
    • 1970-01-01
    • 2018-11-12
    • 2021-11-27
    • 2012-09-22
    相关资源
    最近更新 更多