Copier un treeview

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 093 fois - Téléchargée 17 fois

Contenu du snippet

après pas mal de galères (je n'ai pas trouvé de source "simple" sur le web).
voici un tout petir code permettant de copier un treeview
( et autres controles )

Source / Exemple :


''' <summary>
    '''     Copie d'un TREEVIEW
    ''' </summary>
    ''' <param name="TRV_source" type="System.Windows.Forms.TreeView">
    '''     <para>
    '''         Le Treeview source
    '''     </para>
    ''' </param>
    ''' <param name="TRV_dest" type="System.Windows.Forms.TreeView">
    '''     <para>
    '''         La copie - Treeview destination
    '''     </para>
    ''' </param>
    Public Sub copy_treeview(ByRef TRV_source As TreeView, ByRef TRV_dest As TreeView)
        Dim Noeud As TreeNode

        For Each Noeud In TRV_source.Nodes
            TRV_dest.Nodes.Add(CType(Noeud.Clone, TreeNode))
        Next

Conclusion :


en espérant que cela puisse rendre service a certains d'entres vous

A voir également

Ajouter un commentaire

Commentaires

Adn56
Messages postés
1220
Date d'inscription
jeudi 24 mai 2007
Statut
Membre
Dernière intervention
28 septembre 2013
1 -
salut, ceci est un snippet non ?, donc ?....
Sinon une question, le byref pour la destination je comprends mais pour la source pourquoi pas un byval ?
oui je sais j'ai encore un peu de mal avec les deux ^^
++
cs_bigboss9
Messages postés
162
Date d'inscription
jeudi 22 janvier 2004
Statut
Membre
Dernière intervention
20 juillet 2013
-
Plus simple encore, et fonctionnel avec TOUT type de classe : la Sérialization. Il te suffit de sérializer Nodes() et de le déserializer dans le nouveau Treeview.
Adn56
Messages postés
1220
Date d'inscription
jeudi 24 mai 2007
Statut
Membre
Dernière intervention
28 septembre 2013
1 -
oui en effet, mais cela implique un accés au HDD, et donc un nom de fichier + chemin, là c'est direct. Et tu dois tout de même transférer la treeview dans une classe ? ou au moins en créér une qui hérite de la treeview non ? @ te lire.
Note que ta proposition permet surtout de garder une trace sur le HDD au cas où, donc bonne infos en tout cas.
++
cs_bigboss9
Messages postés
162
Date d'inscription
jeudi 22 janvier 2004
Statut
Membre
Dernière intervention
20 juillet 2013
-
Non.

La sérialisation peut s'effectuer de 2 façons : En Binaire, ou en XML. (Le XML est le plus adapté pour ce genre de choses). Ensuite, la méthode de sérialisation peut s'effectuer de 2 façons : Soit avec un FileStream, ou bien un MemoryStream, pour ne pas avoir à écrire sur le disque. Donc pas de chemin à gérer, seulement un objet placé en mémoire et que l'on détruit lorsque l'on à fini. Pas besoin de classe :

Dim mTreeview as new TreeView
mTreeview.Nodes = CType(FunctionSerializeNodes(TreeViewSourceNodes), TreeNode)

Public Function FunctionSerializeNodes(TreeviewSource as TreeView) as Nodes

'Ajout de la fonction de serialisation

Return NodesSerialisés

End Function
cs_bigboss9
Messages postés
162
Date d'inscription
jeudi 22 janvier 2004
Statut
Membre
Dernière intervention
20 juillet 2013
-
Biensur, entre : 'Ajout de la fonction de serialisation et Return NodesSerialisés, on y placera la fonction qui déserialise le tout dans NodesSerialisés.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.