以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 如何用代码判断treeview 同一节点下 不能有重复值? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=188770) |
-- 作者:jswjyjf -- 发布时间:2023/10/17 21:32:00 -- 如何用代码判断treeview 同一节点下 不能有重复值? 如何用代码判断treeview 同一节点下 不能有重复值? |
-- 作者:有点蓝 -- 发布时间:2023/10/17 22:21:00 -- 遍历所有子节点,逐个判断。 比如判断选中的节点 Dim tr As WinForm.TreeView tr = Forms("窗口1").Controls("TreeView1") Dim td As WinForm.TreeNode = tr.SelectedNode dim lst as new list(of string) for each dd as WinForm.TreeNode in td.nodes if lst.contains(dd.text) then msgbox("重复节点:" & dd.text) else lst.add(dd.text) end if next |
-- 作者:jswjyjf -- 发布时间:2023/10/18 10:00:00 -- 2楼的是事后检查 我的要求是 同一节点下 不能重复 跨节点可以重复 如图
|
-- 作者:有点蓝 -- 发布时间:2023/10/18 10:17:00 -- 那就在增加之前就遍历判断呀 |
-- 作者:jswjyjf -- 发布时间:2023/10/18 10:21:00 -- AfterEditNode 事件代码 Dim strnum As String=e.node.fullname.replace("\\",".") \'检查是否有重复名称 Dim nochongfu As Boolean nochongfu=True Dim treename As String treename=e.newtext \'\' \'判断重复 Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1") For Each nd As WinForm.TreeNode In trv.AllNodes If nd.FullName <> e.Node.FullName AndAlso nd.Text = e.NewText Then messagebox.show("有重复名称","信息提示") e.cancel=True nochongfu=False End If Next 这样的话 不管任何节点下 都不能重复了 不符合我的要求 麻烦帮我看一下
|
-- 作者:有点蓝 -- 发布时间:2023/10/18 10:31:00 -- …… Dim trv As WinForm.TreeView = e.Sender Dim ns = trv.nodes If e.node.ParentNode IsNot Nothing Then ns = e.node.ParentNode.nodes End If For Each nd As WinForm.TreeNode In ns If nd.FullName <> e.Node.FullName AndAlso nd.Text = e.NewText Then messagebox.show("有重复名称","信息提示") e.cancel=True …… |
-- 作者:jswjyjf -- 发布时间:2023/10/18 11:06:00 -- 可以了 感谢 |