[C#]Copier un treeview dans un autre

fafa139
[C#]Copier un treeview dans un autre

Salut à tous,

J'ai à réaliser un treeview qui sera affiché en même temps à droite et à gauche de l'écran.

est ce qu'il est possible de programmer le treeview une seule fois et faire de sorte qu'il soit copié de l'autre côté?

Cordialement,

Afef

fredericmazue

A priori non, car pour des raisons de libérations de ressources un contrôle comme ton treeview ne peut être enfant que d'un seul parent et une seule fois.
Tu vas devoir clôner ton TreeView pour obtenir ce que tu veux.

Après le client léger, le client riche, aurions nous le client louche ? :lol:

fafa139

Comment clôner un treeview?

fredericmazue

Tu as de ces questions....
En copiant le contenu du premier dans un second TreeView...
C'est même le titre de ta question :P

fredericmazue

Comme j'ai 5 mn, je reviens sur le sujet en te proposant mon avis. Ton affaire de copie de TreeView ne me paraît pas très saine. Si j'avais à faire ça, d'abord je repenserai mon interface utilisateur histoire de voir s'il n'est pas possible d'éviter d'afficher 2 TreeView identiques parce que c'est quand même bizarre ton affaire, et que moins on écrit de code mieux on se porte..

Si vraiment tu es obligée, alors copier un TreeView n'est pas la solution, car c'est trop porteur de bugs potentiels. La solution se trouve dans les Design Pattern car tu veux avoir deux vues (fussent elles identiques) d'une même chose. Tu peux par exemple t'inspirer du pattern MVC (Model View Controler). En gros tu écris une classe, le modèle, qui s'occupe de gérer, récolter les données (serve OPC, Base, etc....) Quand les données sont récoltées, ou quand le contenu du modèle (autrement dit les données) est modifié, le modèle notifie les vues dont il garde la liste quelque part, en appelant pour chaque vue une méthode prévue à cet effet et qu'il est sans doute pertinent de déclarer dans une interface implémentée par les TreeView ou ce qui les encapsule.

Pour être précis, ceci n'est pas du vrai MVC mais du Model View seulement, ce qui à priori est suffisant pour ton problème. 8)