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

C# 在运行时在TreeView上添加子节点,c#,.net,winforms,C#,.net,Winforms,我有这个问题。我正在尝试在运行时使用treeview。我正在尝试添加一个子节点,并使用EF将其存储到数据库中 现在的问题是,数据库在检索时如何将其作为子节点放置 举个例子,我有一个名为Users的根节点,在这个Users下,有一个名为“Names”的子节点。如果我把鼠标放在一个子节点上,比如说“Names”,可能有一个表单可以在“Names”下面添加一个子节点,并将其命名为“Godymn”。数据库如何处理此问题并知道如何将其作为子节点放置?。 到目前为止,当我尝试在“名称”中添加子节点时,它会将

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

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

举个例子,我有一个名为Users的根节点,在这个Users下,有一个名为“Names”的子节点。如果我把鼠标放在一个子节点上,比如说“Names”,可能有一个表单可以在“Names”下面添加一个子节点,并将其命名为“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);
            }
        }

感谢您的帮助。

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);
TreeNode用户=新的TreeNode(“用户”);
树节点名称=新树节点(“名称”);
列表节点=新列表();
foreach(q中的var项目)
name.Nodes.Add(新的TreeNode(item.Title));
users.Nodes.Add(名称);
treeView1.Nodes.Add(用户);

关于数据库如何处理事情的问题,您应该为您的子节点提供一个关系表,其中包含一个名为
ParentNode
的列,该列为
NULL
Empty
或包含与父节点关联的
标记。这有助于你以正确的方式构建事物。

你应该解决部分问题:因为这是误导。问题不在于数据库如何处理这个问题(甚至不在于ADO.NET)——您甚至不需要配置一个数据库来面对您遇到的问题。在我看来,您只是在问如何使用实体框架处理层次结构类型,这是一个有点太宽泛的问题。