不能直接用代码在NodeCheck事件中控制其状态,可用如下方法解决:在ImageList中的第一个图标是对号,第二个图标是方框,通过改变Node的Image来表示Node的不同状态。Private Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node)
    If condition Then
        Node.Image = 1
    Else
        Node.Image = 2
    End If
End Sub

解决方案 »

  1.   

    提供一个思路:MouseDown事件是在Check事件之前发生的,可以在MouseDown中提前改变一下Node的Check的值,但是到底是在哪个Node上单击就不知道怎么确定了!
    试试看下面的代码,TreeView的第一个节点就不被选中了!
    Private Sub TreeView_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
      If TreeView.HitTest(x, y) Is TreeView.Nodes(1) Then
        TreeView.Nodes(1).Checked = True
      End If
    End Sub