以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  请教目录树  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=79255)

--  作者:hbhb
--  发布时间:2015/12/27 21:16:00
--  请教目录树
大师:为何下面的代码不能保证目录树第一节点可见?
tv.Nodes.Insert("全部",0)

tv.CollapseAll

tv.SelectedNode = tv.Nodes(0)
tv.Select


--  作者:大红袍
--  发布时间:2015/12/27 21:32:00
--  

加一句

 

tv.basecontrol.nodes(0).EnsureVisible

 


--  作者:hbhb
--  发布时间:2015/12/27 21:50:00
--  
显示不是notes不是成员?
--  作者:大红袍
--  发布时间:2015/12/27 21:51:00
--  

Dim btv = tv.basecontrol

btv.nodes(0).EnsureVisible


--  作者:hbhb
--  发布时间:2015/12/27 21:56:00
--  
还是无效?
--  作者:大红袍
--  发布时间:2015/12/27 21:56:00
--  
上传项目。
--  作者:hbhb
--  发布时间:2015/12/27 22:00:00
--  
Dim tv As WinForm.TreeView = Args(0) \'---目录树
Dim t As Table = Args(1)  \'--窗口中的表
Dim t1 As String = args(2)  \'--筛选准则--
tv.StopRedraw
Dim cmd As New SQLCommand
cmd.CommandText = "Select * Fr om {" & t.DataTable.Name & "} Where (km2 = \'" & t1 & "\' and km7 Is Not Null) Order By km7"

Dim dt As DataTable = cmd.ExecuteReader
Dim lst As New List(Of Integer)
For Each dr As DataRow In dt.DataRows
    If lst.Contains(dr("km7").Length) = False Then
        lst.Add(dr("km7").Length)
    End If
Next
lst.Sort    \'------科目代码长度集合
tv.Nodes.Clear

For Each dr As DataRow In dt.DataRows          \'----遍列表生成目录树----
    
    If tv.Nodes.Contains(dr("km7")) = False Then
        If dr.IsNull("km3") = False Then
            If tv.Nodes.Contains(dr("km3")) = False  Then
                tv.nodes.Add(dr("km3"))
                tv.nodes(dr("km3")).Nodes.Add(dr("km7"),dr("km4") & "-" & dr("km7"))
                \'tv.nodes(dr("km3")).nodes(dr("km7")).Nodes.Add(dr("km7"))
            Else
                tv.nodes(dr("km3")).Nodes.Add(dr("km7"),dr("km4") & "-" & dr("km7"))
                \'tv.nodes(dr("km3")).nodes(dr("km7")).Nodes.Add(dr("km7"))
            End If
        Else
            tv.Nodes.Add(dr("km7"),dr("km4") & "-" & dr("km7"))
            \'tv. nodes(dr("km7")).Nodes.Add(dr("km7"))
        End If
    End If
    
Next

For Each nd As WinForm.TreeNode In tv.AllNodes
    For i As Integer = 1 To lst.Count - 1
        If nd.Name.Length = lst(i) Then
            For j As Integer = 0 To i - 1
                nd.MoveRight
            Next
        End If
    Next
Next
tv.Nodes.Insert("全部",0)


Dim btv = tv.basecontrol
btv.nodes(0).EnsureVisible
tv.SelectedNode = tv.Nodes(0)
tv.Select
tv.CollapseAll
tv.ResumeRedraw

--  作者:大红袍
--  发布时间:2015/12/27 22:01:00
--  
上传项目
--  作者:大红袍
--  发布时间:2015/12/27 22:03:00
--  
汗,代码写到最后啊。
--  作者:hbhb
--  发布时间:2015/12/27 22:05:00
--  
谢谢!这句代码前后有关系?