2012-02-16 2 views
0

Я работаю над компактным фреймворком 2.0 и с использованием C#. У меня проблема с переустановкой узла treeview. Сценарий выглядит следующим образом: temp0 temp1 temp2 temp3 У меня есть некоторый узел в древовидной структуре и с помощью стрелок вверх и вниз для перемещения узла вверх и вниз. , но проблема в том, что как только я выбираю узел и нажимаю стрелку вверх, узел перемещается вверх , и я не могу выбрать узел чуть ниже этого узла. Предположим, что я выбираю temp3 и нажимаю стрелку вверх, этот temp3 заменяется на temp2. так: temp0 TEMP1 temp3 temp2 после этого я не можите выбрать temp2, но в состоянии выбрать temp3 и другой узел независимо вверх.resview выбора Treeview


Я использую этот код для стрелка вверх:

INT paramPos = this.treeView1.SelectedNode.Index;

, если (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];

Еогеасп (System.Windows.Forms.TreeNode Tnode в this.treeView1.Nodes)

{

ArgumentNumberInfo аи = (ArgumentNumberInfo) tnode.Tag;

ai.ArgNo = tnode.Index + 1;

} 

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


      } 
     } 

После нажатия стрелки узел поднимается вверх, но я не могу выбрать узел ниже этого. NODE0

node1

node2

node3

При выборе node3 и нажмите на стрелку вверх node3 будет идти вверх и node2 сойдёт, но вы можите выбрать node2. , пожалуйста, дайте мне понять, почему это происходит. Thnx для вашего времени.

+0

ли вы изменить свой вопрос, чтобы включить фактический код, который изменяет TreeView пожалуйста? –

+0

для стрелки вверх Я использую этот код: – user1213444

ответ

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); 
+0

Большое спасибо. Это сработало для меня. – user1213444

+0

Добро пожаловать. (Это тот момент, когда вы принимаете ответ!) –

Смежные вопросы