Foxtable(狐表)用户栏目专家坐堂 → 请教SaveToString能不能只保存复选框选中的节点?


  共有12281人关注过本帖树形打印复制链接

主题:请教SaveToString能不能只保存复选框选中的节点?

帅哥哟,离线,有人找我吗?
狐狸爸爸
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/12/15 17:21:00 [显示全部帖子]

这个不可以的,只能自己遍历合成字符串了:

http://www.foxtable.com/help/topics/2302.htm

 


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/12/15 17:42:00 [显示全部帖子]

呵呵,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

[此贴子已经被作者于2011-12-15 17:43:24编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/12/16 10:49:00 [显示全部帖子]

我不明白你具体的意思的,因为如果只是保存为字符串,不是很简单的一件事情吗?

你的具体任务是什么?


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/12/16 12:24:00 [显示全部帖子]

我的建议,保存为两个文件,简单高效。

 

保存按钮的代码:

 

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

 

 

 

 


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/12/16 14:49:00 [显示全部帖子]

怎么可以只保存选中的节点?

如果父节点没有选中,子节点选中,保存的时候只保存子节点,那生成的时候,这个子节点生成在何处?


 回到顶部