【问题标题】:How do you get the root node or the first level node of the selected node in a tree view?如何在树形视图中获取选定节点的根节点或一级节点?
【发布时间】:2011-05-30 01:29:33
【问题描述】:

有没有比下面的代码更直接的方法来获取树视图中的根节点或第一级节点?

TreeNode node = treeView.SelectedNode;

while(node != null)
{
       node = node.Parent;
}    

【问题讨论】:

  • 在我的程序中,我按照您的描述进行操作(或至少类似;您的代码将始终导致node 变量中的null 引用)。您是否遇到过性能问题?
  • @Vlad Lazarenko 这仅在您只有一个根节点时才有效。

标签: c# .net treeview treenode


【解决方案1】:

其实正确的代码是:

TreeNode node = treeView.SelectedNode;
while (node.Parent != null)
{
    node = node.Parent;
} 

否则,您将始终在循环结束时获得node = null

顺便说一句,如果你确定你的TreeView 中只有一个根,你可以考虑直接使用treeView.Nodes[0],因为在这种情况下它会给出根。

【讨论】:

    【解决方案2】:
    protected void Submit(object sender, EventArgs e)
            {
               ///naidi root 
    
                string name = Request.Form["Name"];
                if (String.IsNullOrEmpty(name))
                    return;
    
                if (TreeView1.Nodes.Count <= 1)
                {
                    System.Web.UI.WebControls.TreeNode newNode = new TreeNode("Porposal");
                    TreeView1.Nodes.Add(newNode);
                }
    
    
    
    
                System.Web.UI.WebControls.TreeNode newNode1 = new TreeNode(name);
                TreeView1.Nodes[1].ChildNodes.Add(newNode1);
    
    
            }
    

    【讨论】:

    • 目前还不清楚这如何回答问题,评论中的代码也无济于事。您需要编辑您的问题。
    【解决方案3】:

    试试这个。它对我有用...!

    treeView1.TopNode.Expand();
    

    【讨论】:

    • 你读过这个问题吗?请参阅关于 TopNode 问题的被否决的答案。
    • 该命令会改变树形视图的显示。显示展开节点。问题(恕我直言)是如何获取选定节点的根节点作为代码中的对象。
    【解决方案4】:
    TreeNode rootNode = treeView1.TopNode;
    

    这应该是你所需要的。 SelectedNode 不需要总是 != null

    【讨论】:

    • 这是非常错误的。这将获得“树视图控件中的第一个完全可见的树节点。”。请注意,“最初,TopNode 返回第一个根树节点,它位于 TreeView 的顶部。但是,如果用户滚动了内容,则另一个树节点可能位于顶部。”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多