|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Nov 2001
Città: Milano
Messaggi: 2361
|
[c#] spostare i nodi in un treeview
In un componente treeView di visual c# 2.0 (Visual Studio 2005) devo implementare la funzionalità che permette di spostare su e giù i nodi all'interno dello stesso livello, in pratica vorrei poter cambiare l'ordine dei figli di un certo nodo, ad esempio:
Padre +---Figlio1 +---Figlio2 +---Figlio3 deve poter diventare Padre +---Figlio3 +---Figlio1 +---Figlio2 Sono riuscito a farlo per le foglie, ma per i rami (quindi nodi con figli) non sono riuscito a trovare metodi per inserire nodi che prendessero rami dell'albero come parametri, avete idea di come si possa fare?
__________________
La parola d'ordine, tanto per cambià è sempre la stessa: VIUUULENZA!!! Trattative MAC: Powerbook 12" PC1: GA-X48-DS4, Q9300, 2x2GB Corsair 8500, 2 Ati 4870 Crossfire, Seagate 1.5TB PC2: M2NPV-VM, 64x2 4800+, 1GB DDR2, Ati 4670, Maxtor 120GB PC3: GA-7VT600 1394, Barton 2500+@3000+, 2GB DDR400, 6800, Seagate 160GB PHOTO: Canon Digital IXUS 430 |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2001
Città: Milano
Messaggi: 2361
|
Alla fine sono riuscito, posto il codice nel caso servisse a qualcun altro:
Codice:
private void moveUpToolStripMenuItem_Click(object sender, EventArgs e)
{
if (treeView1.SelectedNode != null)
{
//Memorizzo il padre del nodo che sto spostando:
//il nodo spostato sarà ancora figlio suo con indice diminuito di 1
TreeNode parent = treeView1.SelectedNode.Parent;
//memorizzo la posizione originale del nodo prima dello spostamento
int originalIndex = treeView1.SelectedNode.Index;
//memorizzo l'intero ramo da spostare
TreeNode branch = treeView1.SelectedNode.Clone() as TreeNode;
//elimino il nodo dalla vecchia posizione
treeView1.SelectedNode.Remove();
try
{
if (parent == null) //se non ho parent sono al livello della radice
{
treeView1.Nodes.Insert(--originalIndex, branch);
}
else //non sono a livello della radice
{
//inserisco un nodo identico nella posizione appena sopra
parent.Nodes.Insert(--originalIndex, branch);
}
treeView1.SelectedNode = branch;
}
catch (NullReferenceException ex)
{
MessageBox.Show(ex.Message);
}
}
}
__________________
La parola d'ordine, tanto per cambià è sempre la stessa: VIUUULENZA!!! Trattative MAC: Powerbook 12" PC1: GA-X48-DS4, Q9300, 2x2GB Corsair 8500, 2 Ati 4870 Crossfire, Seagate 1.5TB PC2: M2NPV-VM, 64x2 4800+, 1GB DDR2, Ati 4670, Maxtor 120GB PC3: GA-7VT600 1394, Barton 2500+@3000+, 2GB DDR400, 6800, Seagate 160GB PHOTO: Canon Digital IXUS 430 |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 14:13.



















