Как я могу заставить TreeNode изменять курсор при наведении на него указателя мыши?

Я создал меню с использованием древовидной структуры для запуска форм, когда пользователь щелкает узел. Чтобы завершить внешний вид, я настроил узлы так, чтобы они выглядели как гиперссылки. Я бы хотел, чтобы курсор изменился на руку (например, тот, который вы видите при наведении курсора на ссылку), когда пользователь наводит курсор на узел, однако до сих пор я мог изменить курсор только при наведении курсора внутри древовидное представление, а не по узлу. Насколько я могу судить, 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.


person Caleb Hearth    schedule 15.07.2010    source источник


Ответы (2)


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

person Hans Passant    schedule 16.07.2010
comment
У вас есть элемент управления, который не вызывает событие MouseMove ?? Оставь всякую надежду. - person Hans Passant; 16.07.2010
comment
К сожалению, использовалось неправильное событие MouseMove. Это действительно хорошо сработало. Спасибо. - person Caleb Hearth; 16.07.2010

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

person Will A    schedule 15.07.2010
comment
Я попробую завтра. Свободный день на работе. Спасибо. - person Caleb Hearth; 16.07.2010