1

ツリービューを使用して、ユーザーがノードをクリックしたときにフォームを起動するメニューを作成しました。ルックアンドフィールを完成させるために、ハイパーリンクのように見えるようにノードを設定しました。ユーザーがノードにカーソルを合わせたときに、カーソルを手(リンクにカーソルを合わせたときに表示されるものなど)に変更したいのですが、これまでは、カーソルを内側にカーソルを合わせたときにしかカーソルを変更できませんでした。ノード上ではなく、ツリービュー。私の知る限り、TreeNodeにはMouseEnterなどのイベントがないため、イベント自体を処理させることはできません。

この関数を使用してノードをループし、TreeNodeのBoundsプロパティをカーソルの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

私は誰かがこれを達成するために正しい方向に私を向けることができることを望んでいました。本質的に、私はネストされた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 に答える