Question

J'ai une application qui lit une table à partir d'une base de données.

- Je émettre une requête SQL pour obtenir un ensemble de résultats, basée sur une unique chaîne de valeur que j'ai glaner des résultats, j'utilise un cas/instruction switch pour générer de certains objets (ils héritent TreeNode BTW).Ces objets créés redirigées dans un Dictionnaire d'objet pour être utilisé plus tard.

Alors que la production de ces objets que j'utilise certaines valeurs de l'ensemble de résultats pour remplir les valeurs de l'objet par les organismes de normalisation.

J'ai une requête le Dictionnaire pour retourner un type d'objet particulier et l'utiliser pour remplir un treeview.Cependant, il n'est pas possible de remplir de 2 objets de même type dans un treeview à partir de l'objet Dictionnaire (vous obtenez une erreur d'exécution - qui m'échappe pour le moment, quelque chose d'à la référence au même objet).Donc ce que j'ai à faire est d'utiliser un memberwiseClone et de mettre en œuvre IClonable de contourner ce problème.

Suis-je à faire de ce droit?Est-il une meilleure façon - parce que je pense que c'est à l'origine de mon programme pour être vrai ralentir à ce point.À tout le moins, je pense que c'est un peu maladroit - des conseils de personnes qui en savent plus que moi, grandement appréciée.

Était-ce utile?

La solution

Pour ajouter à @Brad, seulement de remplir l'arbre en tant que de besoin.Que les moyens d'accrochage dans l'expansion de l'événement de l'arbre de nœuds.Ceci est similaire à la façon dont Windows Explorer les fonctions lorsque vous traitez avec des partages réseau.

Il devrait y avoir 1 TreeNode objet par les noeuds de l'arbre dans l'arbre - n'essayez pas de réutiliser les choses.Vous pouvez les associer à des données à l'aide de la Balise de propriété (c'est la méthode recommandée), ou vous pouvez créer des sous-classes TreeNode lui-même (c'est la méthode de Java, mais moins utilisé dans .NET).

(L'utilisation de méthodes de clonage est généralement une indication que vous êtes soit (un) faites quelque chose de mal, ou (b) besoin de prendre votre modèle de domaine pour séparer les objets mutables de immuable.)

Autres conseils

Est-il une raison pour laquelle vous êtes à l'aide de l'externe dictionnaire?Je voudrais remplir l'arbre directement les données sont interrogées.

Si vous avez besoin du dictionnaire, vous pouvez définir le .Propriété Tag du nœud de l'arborescence de point de données dans votre dictionnaire.

avez-vous envisagé d'utiliser une Arborescence Virtuelle de vue qui ne charge que les nœuds de l'utilisateur veut regarder - j'ai eu un bon succès avec le composant de www.infralution.com

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top