我正在使用紧凑型框架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适合您的时间。
答案 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);