Rss & SiteMap
Foxtable(狐表) http://www.foxtable.com
请教,如题。
如果不能要把选中的节点保存为一个字符串该怎么做?
狐爸能给段SaveToString的代码吧。
参考下。
想偷点懒。
呵呵,foxtable的代码不适合你的,自己定义一套规则,逐个遍历合成就行。
这是foxtable保存目录树节点的函数,使用的是递归,而且牵涉很广,无法直接用的:
Friend Shared Sub GetSimpleNodesSettingString(ByVal Nodes As Windows.Forms.TreeNodeCollection, ByRef Str1 As String)
Dim Node As Windows.Forms.TreeNode
For Each Node In Nodes
Dim np As New SimpleNodeProperty(CType(Node, CustomTreeNode))
If Str1 <> "" Then
Str1 = Str1 & ControlChars.FormFeed
End If
Str1 = Str1 & SaveObjectPropertyToString(np, False, ControlChars.Tab).Replace(ControlChars.FormFeed, "")
If Node.Nodes.Count > 0 Then
Str1 = Str1 & ControlChars.FormFeed & "Inner"
GetSimpleNodesSettingString(Node.Nodes, Str1)
Str1 = Str1 & ControlChars.FormFeed & "Outer"
End If
Next
End Sub
太难了
谢谢狐爸
狐爸能否考虑加上这个功能呢。
这样很多时候下拉目录树可以直接生成了。
自己编码的话,保存的时候要写个函数,生成又要写个函数了。
狐爸上次你给了生成目录树的递归的例子。
这个再给写个例子吧。
这个还是比较有难度,做不来啊
我不明白你具体的意思的,因为如果只是保存为字符串,不是很简单的一件事情吗?
你的具体任务是什么?
需求:把目录树选中的节点,按照目录树的结构保存下来。
并且符合狐表的字符串规范。
能用LoadFromString生成。
我的建议,保存为两个文件,简单高效。
保存按钮的代码:
Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim s As String
trv.Save("c:\data\mytree.tre")
For Each nd As WinForm.TreeNode In trv.AllNodes
If nd.Checked Then
If s > "" Then
s = s & vbtab
End If
s = s & nd.FullPath
End If
Next
filesys.WriteAllText("c:\data\mytree.chk",s,False)
加载按钮的代码:
Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim nms As new List(of String)
trv.Nodes.Clear
trv.Load("c:\data\mytree.tre")
nms.AddRange(filesys.ReadAllText("c:\data\mytree.chk").Split(vbtab))
For Each nd As WinForm.TreeNode In trv.AllNodes
If nms.Contains(nd.FullPath) Then
nd.Checked = True
End If
Next