我当时认为这将是显示具有多个顶级节点的Treeview的有用方式。
示例:假设我想创建一个地理的TreeView,我希望顶级节点是国家/地区。我可以通过以下方式做到这一点:
但用户想要的是:
如果我可以构建一个TreeView并简单地隐藏World而不是构建两个TreeView,那将是很好的。
更新==========================
我想要这样做的原因是我有递归处理TreeView的例程,例如在更新之前遍历树以保持其崩溃/展开状态。有一个不可见的topnode开始处理。
会很高兴答案 0 :(得分:4)
没有;如果你考虑一下,如果隐藏了父节点,你不期望所有的孩子都被隐藏吗?
我要做的是将视图保留在视图之外,并复制从指定节点开始的项目。
答案 1 :(得分:1)
您可以在根级别添加多个节点。即添加像
treeView1.Nodes.Add("Hello 1").Nodes.Add("Hello 3"); treeView1.Nodes.Add("Hello 2").Nodes.Add("Hello 4");这样的东西至少对我来说就是这样。
修改: 如果你真的必须有一个根节点来遍历树(并且你只是懒得没有一个以上的函数)那么你可以使用下面的代码,至少对于.NET 2(没有检查其他任何东西)。请注意我不推荐这个但是你恳求它;)
TreeNode realRoot = (TreeNode)treeView1.GetType().InvokeMember("root", BindingFlags.GetField | BindingFlags.NonPublic | BindingFlags.Instance, null, treeView1, null);
realRoot的子节点仍将为其父节点返回null(这是代码的设计方式),但是如果必须将其用于正向使用,则可以使用:)