C# 从其他树视图引用树视图

C# 从其他树视图引用树视图,c#,winforms,treeview,C#,Winforms,Treeview,我有一个窗口窗体,它有一个控制treeViewMain,在代码中我有一个treeViews列表,它有可变数量的treeViews。我想让treeViewMain显示列表中的任何一个treeView treeViewMain=treeViews[0]; 但是表单没有显示树。我还彻底检查了列表中的TreeView,它们的填充正确 显然,简单的分配不起作用。根据这项研究,一个TreeViewNode的父节点似乎必须是唯一的,而且“果实”只能位于一棵树上 一种解决方法是将列表中TreeView的父属性

我有一个窗口窗体,它有一个控制treeViewMain,在代码中我有一个treeViews列表,它有可变数量的treeViews。我想让treeViewMain显示列表中的任何一个treeView

treeViewMain=treeViews[0];

但是表单没有显示树。我还彻底检查了列表中的TreeView,它们的填充正确

显然,简单的分配不起作用。根据这项研究,一个
TreeViewNode
的父节点似乎必须是唯一的,而且“果实”只能位于一棵树上

一种解决方法是将列表中
TreeView
的父属性设置为
treeViewMain

treeViews[0].Parent = treeViewMain;
这将把列表中的树视图作为子视图放到
treeViewMain
中。如果要更改此项并从列表中加载下一项,则需要确保在分配新的父项之前,将先前加载的项的父项属性设置为null,如本例所示:

private int count = 0;

private void button_ChooseTreeView_Click(object sender, EventArgs e)
{
    if (count > 0)
    {
        treeViews[count -1].Parent = null;
    }
    treeViews[count].Parent = treeViewMain;
    count++;
}

另一种可能是克隆每个节点并填充
treeViewMain
,每次您要将列表项更新到显示时,显然简单的分配不起作用。根据这项研究,一个
TreeViewNode
的父节点似乎必须是唯一的,而且“果实”只能位于一棵树上

一种解决方法是将列表中
TreeView
的父属性设置为
treeViewMain

treeViews[0].Parent = treeViewMain;
这将把列表中的树视图作为子视图放到
treeViewMain
中。如果要更改此项并从列表中加载下一项,则需要确保在分配新的父项之前,将先前加载的项的父项属性设置为null,如本例所示:

private int count = 0;

private void button_ChooseTreeView_Click(object sender, EventArgs e)
{
    if (count > 0)
    {
        treeViews[count -1].Parent = null;
    }
    treeViews[count].Parent = treeViewMain;
    count++;
}

另一种可能是克隆每个节点并填充
treeviwmain
,每次您要将列表项更新到显示时

您是否能够解决问题?是的,我通过清除treeviwmain的所有子节点,然后添加treeViews的子节点[0]来解决问题到treeViewMain@MongZhu你能解决你的问题吗?是的,我通过清除treeViewMain的所有孩子,然后将treeViews[0]的孩子添加到treeViewMain@MongZhu来解决问题