【问题标题】:Treeview: custom order after adding new root nodesTreeview:添加新根节点后的自定义顺序
【发布时间】:2013-07-18 15:18:48
【问题描述】:

我有 10 个不同的根节点,除非我需要它们,否则我不想添加它们(它们不存在,只要我不调用它们)。所以我用了

treeView1.Nodes.Insert(0, Node);
treeView1.Nodes.Insert(1, Node);
treeView1.Nodes.Insert(2, Node);

等等。如果我添加 Node0、Node1 和 Node2,一切正常。但是,如果我尝试像 Node2、Node1、Node0 那样更改顺序,我会遇到问题 - Node0 工作正常,但没有 Node1,但有两个 Node2 或 Node1 和 Node2 交换位置。是否可以跳过某个位置,以便将来使用它?为了检查节点索引,我使用了这个代码,附在按钮上:

MessageBox.Show(treeView1.SelectedNode.Index.ToString());

【问题讨论】:

    标签: c# winforms visual-studio-2010


    【解决方案1】:

    我认为您使用了错误的方法来添加节点。

    对于初始创建,您可以使用treeView1.Nodes.Add(node)。 当您实际上想要在给定索引处插入节点时,请确定您想要的位置,然后在适当的索引处使用Insert

    您的节点交换位置的原因是因为在上面的示例中插入是没有意义的。在没有节点的列表中插入位置 2 的节点会将其添加到位置 0。

    编辑:添加代码示例。

            TreeNode node1 = new TreeNode("Node 1");
    
            view.Nodes.Add(new TreeNode("Node 0"));
            view.Nodes.Add(new TreeNode("Node 2"));
            view.Nodes.Add(new TreeNode("Node 4"));
    
            // Point 1
    
            view.Nodes.Insert(1, node1);
    
            // Point 2
    
            view.Nodes.Insert(3, new TreeNode("Node 3"));
    
            // Point 3
    

    在第 1 点,您的节点集合将是
    节点 0
    节点 2
    节点 4

    在第 2 点,您的节点集合将是
    节点 0
    节点 1
    节点 2
    节点 4

    在第 3 点,您的节点集合将是
    节点 0
    节点 1
    节点 2
    节点 3
    节点 4

    【讨论】:

    • 您能说得更具体些吗?估计不能同时使用.Add和.Insert,会报错。
    • 更具体地说明什么?
    • 可以在现有节点上使用 Insert 吗?或者你的意思是改变选定的节点,然后使用插入?抱歉,我是新手。
    • 感谢您清除它,虽然我的问题没有解决。我有 10 个节点,而且一开始都不存在,所以我想我必须从 Insert 开始,因为你永远不知道哪个会先出现,第二个,等等。是否可以创建自定义排序?因为如果我尝试先添加 Node4,它无论如何都会得到 0 索引。
    • 在您发布一些代码之前,恐怕我无法再为您提供帮助了。我已经解释了您最初的排序问题是什么(即,您在无意义的索引处插入)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多