在运行时在TreeView上添加子节点

时间:2018-07-25 04:10:04

标签: c# .net winforms

我有这个问题。我正在尝试在运行时使用Treeview。我正在尝试添加一个子节点并使用EF将其存储到数据库中。

现在的问题是,数据库在检索时如何将其放置为子节点?

例如,我有一个名为Users的根节点,在该Users下,有一个名为“名称”的子节点。如果我将鼠标放在子节点上,则说“名称”,也许有一个表格可以在“名称”下添加一个子节点,并将其命名为“ Godymn”。数据库如何处理此问题并知道如何将其放置为子子节点? 到目前为止,当我尝试在“名称”中添加一个子节点时,它将其添加到“用户”下。但我希望在运行时将其添加到“名称”下。那就是我被困住的地方。

到目前为止,这是我的代码...。

  using (DBModel db = new DBModel())
        {
            var q = (from i in db.test
                     select i);

            TreeNode treeNode = new TreeNode("Users");
            treeView1.Nodes.Add(treeNode);

            foreach (var item in q)
            {
                TreeNode nodes = new TreeNode(item.title);
                treeNode.Nodes.Add(nodes);
            }
        }

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

TreeNode对象需要从下至上添加(至少在代码中有意义);这不仅可以加快处理速度,而且可以保持代码的清洁和可读性。创建您的顶级节点,然后创建所有子节点。最后,将节点添加到它们各自的位置。

TreeNode users = new TreeNode("Users");
TreeNode names = new TreeNode("Names");
List<TreeNode> nodes = new List<TreeNode>();
foreach (var item in q)
    names.Nodes.Add(new TreeNode(item.Title));

users.Nodes.Add(names);
treeView1.Nodes.Add(users);

关于数据库如何处理问题,您应该为子节点建立一个关系表,该表的列名为ParentNode,该列可以是NULLEmpty或包含与父节点关联的Tag。这可以帮助您以正确的方式构建事物。