Treeview节点重选

时间:2012-02-16 09:33:31

标签: c#-2.0

我正在使用紧凑型框架2.0并使用c#。 我有树视图节点重选的问题。场景是这样的: TEMP0 temp1目录 TEMP2 TEMP3 我在树视图中有一些节点,并使用向上和向下箭头来上下移动节点。 但问题是,一旦我选择一个节点并单击向上箭头,节点就会向上移动 我不能在这个节点下面选择节点。 假设我选择了temp3并按向上箭头,这个temp3被temp2取代。 像这样: TEMP0 temp1目录 TEMP3 TEMP2 在此之后,我无法选择temp2,但能够选择temp3和其他任何节点。


我正在使用此代码获取向上箭头:

int paramPos = this.treeView1.SelectedNode.Index;

if(paramPos> 0)

{

System.Windows.Forms.TreeNode tempNode = this.treeView1.SelectedNode;

this.treeView1.Nodes [paramPos] = this.treeView1.Nodes [paramPos - 1];

this.treeView1.Nodes [paramPos - 1] = tempNode;

this.treeView1.SelectedNode = this.treeView1.Nodes [paramPos - 1];

foreach(this.treeView1.Nodes中的System.Windows.Forms.TreeNode tnode)

{

ArgumentNumberInfo ai =(ArgumentNumberInfo)tnode.Tag;

ai.ArgNo = tnode.Index + 1;

}

                  treeView1.SelectedNode = tempNode;
                  this.treeView1_AfterSelect(null, null);


            }
        }

按下箭头后,节点将会启动,但我无法在此下方选择节点。 节点0

节点1

节点2

节点3

如果选择node3并单击向上箭头,node3将上升,node2将关闭但您无法选择node2。 请给我一些线索,为什么会这样。 Thnx适合您的时间。

1 个答案:

答案 0 :(得分:1)

Treeview节点由内部链表维护。我认为你用来交换它们的方法令链接列表混乱。这是我所指代码的一部分:

System.Windows.Forms.TreeNode tempNode = this.treeView1.SelectedNode;
this.treeView1.Nodes[paramPos] = this.treeView1.Nodes[paramPos - 1];
this.treeView1.Nodes[paramPos - 1] = tempNode;

请尝试以下代码代替上述代码:

System.Windows.Forms.TreeNode tempNode = this.treeView1.SelectedNode;
this.treeView1.Remove(tempNode);
this.treeView1.Insert(paramPos - 1, tempNode);