以文本方式查看主题
- Foxtable(狐表) (http://foxtable.net/bbs/index.asp)
-- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2)
---- 目录树查找定位 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=94267)
|
-- 作者:实话实说
-- 发布时间:2016/12/20 11:29:00
-- 目录树查找定位
当目录树节点很多时需要查找定位,想在窗口1中按型号规格组合查找定位(型号和规格之间空1格),谁能给出代码.
|
-- 作者:有点色
-- 发布时间:2016/12/20 12:15:00
--
Dim arr() As String = e.Form.Controls("型号规格").text.split(" ") Dim xh,gg As String If arr.length > 0 Then xh = arr(0) End If If arr.Length > 1 Then gg = arr(1) End If
Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1") Dim Start As Integer Dim idx As Integer = - 1 If trv.SelectedNode IsNot Nothing Then \'获取当前节点位置. Dim fullpath As String = trv.SelectedNode.FullPath For i As Integer = 0 To trv.AllNodes.count - 1 If trv.AllNodes(i).fullpath = fullpath Then Start = i Exit For End If Next End If For i As Integer = Start + 1 To trv.AllNodes.count - 1 \'从当前节点的下一个节点开始查找 Dim nd As WinForm.TreeNode = trv.AllNodes(i) If gg > "" Then If nd.text.IndexOf(gg) >= 0 Then If xh > "" Then If nd.ParentNode.Text.IndexOf(xh) >= 0 Then trv.SelectedNode = nd nd.EnsureVisible idx = i \'将找到的位置复制给变量idx Exit For End If Else trv.SelectedNode = nd nd.EnsureVisible idx = i \'将找到的位置复制给变量idx Exit For End If End If Else If xh > "" Then If nd.ParentNode.Text.IndexOf(xh) >= 0 Then trv.SelectedNode = nd nd.EnsureVisible idx = i \'将找到的位置复制给变量idx Exit For End If End If End If Next If idx = -1 Then msgbox("找完了") End If trv.Select()
|
-- 作者:实话实说
-- 发布时间:2016/12/20 13:09:00
--
谢了.
|
-- 作者:实话实说
-- 发布时间:2016/12/20 14:12:00
--
还想完善一下:在同一个控件中,不仅对型号规格组合查找,还需要对型号或规格单独查找.
[此贴子已经被作者于2016/12/20 14:12:45编辑过]
|
-- 作者:有点色
-- 发布时间:2016/12/20 15:18:00
--
代码本身就有。请看懂代码,自己调整。
|
-- 作者:实话实说
-- 发布时间:2016/12/20 15:37:00
--
不好意思,试了一下还是没搞定。型号和规格中间的空格有些困惑。
|
-- 作者:有点色
-- 发布时间:2016/12/20 15:41:00
--
查型号,就直接写型号。
查规格,就空格再写规格。
|
-- 作者:实话实说
-- 发布时间:2016/12/20 15:50:00
--
单查型号出错,空一格查规格没问题,如果没空格就出错,希望有纠错提示。
|
-- 作者:有点色
-- 发布时间:2016/12/20 15:57:00
--
第几级节点是型号,第几级节点是规格?下面的代码,任意匹配的,没有涉及到层级关系。
Dim arr() As String = e.Form.Controls("型号规格").text.split(" ") Dim xh,gg As String If arr.length > 0 Then xh = arr(0) End If If arr.Length > 1 Then gg = arr(1) End If
Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1") Dim Start As Integer Dim idx As Integer = - 1 If trv.SelectedNode IsNot Nothing Then \'获取当前节点位置. Dim fullpath As String = trv.SelectedNode.FullPath For i As Integer = 0 To trv.AllNodes.count - 1 If trv.AllNodes(i).fullpath = fullpath Then Start = i Exit For End If Next End If For i As Integer = Start + 1 To trv.AllNodes.count - 1 \'从当前节点的下一个节点开始查找 Dim nd As WinForm.TreeNode = trv.AllNodes(i) If gg > "" Then If nd.text.IndexOf(gg) >= 0 Then If xh > "" Then If nd.ParentNode.Text.IndexOf(xh) >= 0 Then trv.SelectedNode = nd nd.EnsureVisible idx = i \'将找到的位置复制给变量idx Exit For End If Else trv.SelectedNode = nd nd.EnsureVisible idx = i \'将找到的位置复制给变量idx Exit For End If End If Else If xh > "" Then If nd.Text.IndexOf(xh) >= 0 Then trv.SelectedNode = nd nd.EnsureVisible idx = i \'将找到的位置复制给变量idx Exit For End If End If End If Next If idx = -1 Then msgbox("找完了") End If trv.Select()
|
-- 作者:实话实说
-- 发布时间:2016/12/20 16:17:00
--
空一格查型号也没问题
|