Как я могу заставить TreeNode менять курсор при наведении на него курсора мыши? - PullRequest
1 голос
/ 16 июля 2010

Я создал меню, используя древовидную структуру для запуска форм, когда пользователь нажимает на узел. Чтобы завершить внешний вид, я настроил узлы, чтобы они выглядели как гиперссылки. Мне бы хотелось, чтобы курсор менялся на руку (например, ту, которую вы видите, когда вы наводите курсор мыши на ссылку), когда пользователь наводит курсор на узел, однако до сих пор я мог изменять курсор только при наведении курсора внутри. древовидная структура, а не узел. Насколько я могу судить, TreeNode не имеет таких событий, как MouseEnter, поэтому я не могу заставить их обрабатывать сами события.

Я пытаюсь использовать эту функцию для обхода узлов и проверки свойства Bounds TreeNode по свойству 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

Я надеялся, что кто-то может указать мне правильное направление для достижения этой цели. По сути, я ищу внешний вид вложенного массива LinkButton.

Ответы [ 2 ]

1 голос
/ 16 июля 2010

Используйте событие MouseMove.Вызовите метод HitTest ().

1 голос
/ 16 июля 2010

Cursor.Position возвращает позицию указателя мыши в экранных координатах - используйте uxNavigationTreeView. PointToClient , чтобы преобразовать позицию в клиентские координаты, и я думаю, что тогда вам повезет больше.

...