使用 OwnerDrawText TreeView 进行热跟踪
HotTracking with OwnerDrawText TreeView
我无法让 HotTracking 与 OwnerDrawText TreeView 一起工作。
这是我绘制节点的代码。我试过使用 e.state 和 TreeNodeStates.Hot 无济于事。这是我第一次使用 OwnerDraw 对象。
Private Sub tree_DrawNode(sender As Object, e As DrawTreeNodeEventArgs)
If e.Node.Level = 1 Then
HideCheckBox(e.Node)
e.DrawDefault = True
Else
TextRenderer.DrawText(e.Graphics, e.Node.Text, _
e.Node.TreeView.Font, e.Bounds, Color.Black, Color.White)
End If
End Sub
好的,所以我必须将 TreeView 的 HotTracking 设置为 True,然后这是我终于能够开始工作的代码。
' Draw the nodes on the TreeView
Private Sub tree_DrawNode(sender As Object, e As DrawTreeNodeEventArgs)
If e.Node.Level = 1 Then
HideCheckBox(e.Node)
e.DrawDefault = True
Else
If (e.State And TreeNodeStates.Hot) <> 0 Then
TextRenderer.DrawText(e.Graphics, e.Node.Text, e.Node.TreeView.Font, e.Bounds, Color.White, Color.DodgerBlue)
Else
TextRenderer.DrawText(e.Graphics, e.Node.Text, e.Node.TreeView.Font, e.Bounds, Color.Black, Color.White)
End If
End If
End Sub
我无法让 HotTracking 与 OwnerDrawText TreeView 一起工作。
这是我绘制节点的代码。我试过使用 e.state 和 TreeNodeStates.Hot 无济于事。这是我第一次使用 OwnerDraw 对象。
Private Sub tree_DrawNode(sender As Object, e As DrawTreeNodeEventArgs)
If e.Node.Level = 1 Then
HideCheckBox(e.Node)
e.DrawDefault = True
Else
TextRenderer.DrawText(e.Graphics, e.Node.Text, _
e.Node.TreeView.Font, e.Bounds, Color.Black, Color.White)
End If
End Sub
好的,所以我必须将 TreeView 的 HotTracking 设置为 True,然后这是我终于能够开始工作的代码。
' Draw the nodes on the TreeView
Private Sub tree_DrawNode(sender As Object, e As DrawTreeNodeEventArgs)
If e.Node.Level = 1 Then
HideCheckBox(e.Node)
e.DrawDefault = True
Else
If (e.State And TreeNodeStates.Hot) <> 0 Then
TextRenderer.DrawText(e.Graphics, e.Node.Text, e.Node.TreeView.Font, e.Bounds, Color.White, Color.DodgerBlue)
Else
TextRenderer.DrawText(e.Graphics, e.Node.Text, e.Node.TreeView.Font, e.Bounds, Color.Black, Color.White)
End If
End If
End Sub