我知道这不起作用,但任何人都可以向我解释为什么我不能这样做?什么是妨碍我做有问题的机制?
所以
TreeNode[] itemNodes = new TreeNode[2];
itemNodes[0] = new TreeNode("item1");
itemNodes[1] = new TreeNode("item2");
TreeNode[] botNodesFirst = new TreeNode[2];
botNodesFirst[0] = new TreeNode("bot1");
botNodesFirst[1] = new TreeNode("bot2");
TreeNode[] botNodesSecond = new TreeNode[3];
botNodesSecond[0] = new TreeNode("bot1");
botNodesSecond[1] = new TreeNode("bot2", itemNodes);
botNodesSecond[2] = new TreeNode("bot3");
TreeNode[] topNodes = new TreeNode[2];
topNodes[0] = new TreeNode("top", botNodesFirst);
topNodes[1] = new TreeNode("top2", botNodesSecond);
然后这个工作
foreach(TreeNode node in topNodes)
{
trvTest.Nodes.Add(node);
}
但这不是
foreach(TreeNode node in topNodes)
{
trvTest.Nodes.Add(node);
trvTestSecond.Nodes.Add(node);
}
感谢。
答案 0 :(得分:3)
同一个TreeNode不能同时分配给两个TreeView,请记住您正在分配对象的引用。在您的情况下,节点无法定义哪个控件是其父控件。
但有一个奇怪的事情,一个不明显的事情。 不明显的是,禁止将节点分配给新的TreeView,同时它可以被重写并从第一个树中消失并出现在第二个树中。但这是设计上的,我们必须忍受这一点,这并不是那么糟糕。
奇怪的是我的示例项目已正确运行并在第一个树中显示top和top2节点,在第二个树中显示item1和item2。在创建视图时,似乎没有解决树的那些赋值,因为当我调试它并查看TreeNodeCollection时,继续调试引发了一个异常,即节点无法分配给多个树,您必须克隆它们或从中删除第一棵树。这是一种错误或种族。