以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  带查找功能的下拉目录树遍历问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=84623)

--  作者:hswf
--  发布时间:2016/5/5 21:26:00
--  带查找功能的下拉目录树遍历问题

按帮助文件做的带查找功能的下拉目录树,目录树节点为:tv.BuildTree("订单", "部|客户|年|||订单号").

当我在文本框输入字符,点击"下一个按钮查找客户用时会很长(因为毎个客户下面有大量的年月日节点?),甚至卡死

我如果把"下一个按钮的代码改成只遍历第二层客户节点,最高效的代码如何写呢?


--  作者:大红袍
--  发布时间:2016/5/5 22:36:00
--  
 你做个具体的例子上传上来测试。
--  作者:hswf
--  发布时间:2016/5/6 21:43:00
--  
上传上来测试
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:带查找功能的下拉目录树.foxdb


--  作者:hswf
--  发布时间:2016/5/7 8:49:00
--  
下一个按纽,反应太慢了
请老师帮我修改一下

--  作者:Hyphen
--  发布时间:2016/5/7 10:27:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:带查找功能的下拉目录树.foxdb


--  作者:hswf
--  发布时间:2016/5/7 12:10:00
--  
谢谢,点击下一个岀现错误
.NET Framework 版本:2.0.50727.5485
Foxtable 版本:2016.3.27.1
错误所在事件:窗口,窗口1,下一个,Click
详细错误信息:
指定的参数已超出有效值的范围。
参数名: index

[此贴子已经被作者于2016/5/7 12:17:52编辑过]

--  作者:Hyphen
--  发布时间:2016/5/7 12:25:00
--  
......

Dim Start As Integer
If vars("Name") <> txt Then
    vars("Start_0") = 0
    vars("Start_1") = -1
    vars("Name") = txt
End If

Dim find As Boolean
For i As Integer = vars("Start_0") To trv.Nodes.Count - 1
    For j As Integer = (vars("Start_1") + 1) To trv.Nodes(i).Nodes.Count - 1
        Dim nd As WinForm.TreeNode =  trv.Nodes(i).Nodes(j)
        If nd.Text.IndexOf(txt) >= 0 Then
            trv.SelectedNode = nd
            nd.EnsureVisible
            find = True
            vars("Start_0") = i
            vars("Start_1") = j
            Exit For
        End If
    Next
    If find Then Exit For
Next

......