Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 17 su 17
  1. #11
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Originariamente inviato da Veronica80
    ok! Ho risolto così:

    codice:
    dim mioNodo as New treeNode
    mioNodo.text="Nome visualizzato"
    mioNodo.name="Secondo Valore"
    mioNodo.tag="Terzo valore"
    miaTreeView.Nodes.add(mioNodo)

    Così assegno 2 valori nascosti a ogni nodo che richiamo con la proprietà apposita!

    (esempio mioNodo.name).
    La sola cosa che cambia rispetto a prima è che tu valorizzi la proprietà Tag del nodo (ma ti serve? A cosa?).
    Poi, guarda che Name è Key sono la stessa cosa, come recita la guida:

    La proprietà Name corrisponde alla chiave di un oggetto TreeNode nell'insieme TreeNodeCollection.

    Originariamente inviato da Veronica80
    Adesso però ho riscontrato un altro problema (non so se sia un bug).

    Se ciclo i figli di un nodo per rimuoverli tutti a un certo punto ne salta uno (ricicla su uno già rimosso come se ci fosse ancora!)

    Il codice che sto usando è molto semplice...per quello ho pensato a un bug!
    Eccolo qui:

    codice:
    for each nodoFiglio as TreeNode in nodoPadre.nodes
    nodoFiglio.remove
    next
    Ma quale bug...

    Remove serve a rimuovere un nodo specifico (vedi anche RemoveAt e RemoveByKey).

    E' più semplice ed efficiente usare il metodo Clear()
    Se li vuoi rimuovere tutti lo usi sull'insieme Nodes del TreeView:
    codice:
    TreeView1.Nodes.Clear()
    Se invece vuoi eliminare tutti i nodi figli di un nodo 'padre' selezionato:
    codice:
    Dim nodo As TreeNode = TreeView1.SelectedNode
    If nodo.Nodes.Count > 0 Then
        nodo.Nodes.Clear()
    End If
        MessageBox.Show("Selezionare un nodo padre.")
    End If

  2. #12
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    Ma io voglio eliminare solo alcuni nodi! (quelli che flaggo con le checkbox) non tutti!

  3. #13
    Come fai a sapere che il ciclo verte due volte sulle stesso nodo? Forse hai interpretato male il testo di un'eccezione, poiché questo non è possibile. Un'alternativa è usare un contatore numerico per enumerare i nodi figli a partire dal nodo padre ed utilizzare RemoveAt per rimuoverli. Anche se poco elegante, questo ti assicura che non vengano sollevate eccezioni sulla modifica della collezione (impossibile durante un'iterazione con for each) e che non sia il nodo stesso a notificare la propria rimozione.

    N.B.: usare Name per memorizzare valori è incoerente e poco chiaro. E' meglio memorizzare tutto in Tag, usando un oggetto anonimo o una struttura.

  4. #14
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    Lo so perchè vedo le proprietà del nodo ad ogni ciclo...e a volte ripete un nodo che non dovrebbe esserci più :/ (giuro)

    il ps non l'ho capito bene! non son ancora a questi livelli!

  5. #15
    Due oggetti con proprietà uguali non sono necessariamente lo stesso oggetto. E un ciclo foreach non può tornare indietro. L'unica spiegazione è che ci siano due nodi con le stesse proprietà.

  6. #16
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    io credo che il problema stia nel fatto che la funzione remove agisce sull'indice e che dopo che rimuovo una voce scalano di indice le altre! Infatti noto che salta una si e una no!

  7. #17
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Cancella i nodi a ritroso con RemoveAt () oppure RemoveByKey():

    codice:
    Dim nodo As TreeNode = TreeView1.SelectedNode
    If nodo.Nodes.Count > 0 Then
        For i = nodo.Nodes.Count To 0 Step -1
            nodo.RemoveAt () ' o RemoveByKey()
        Next
    End If

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.