2009-06-29 8 views
1

Donc, en travaillant avec C# et Windows Forms, j'ai un tas de classes "Tâche". Chaque classe a un List<Task>, afin qu'ils puissent avoir un nombre quelconque d'enfants (et les enfants peuvent évidemment avoir plus d'enfants ...)Association d'éléments Windows Forms TreeView à des données réelles

Ces tâches sont stockées dans une classe "Project" (dans un List<Task>, évidemment), qui est ensuite sérialisé en XML. J'ai une fonction pour recurse à travers les tâches et les mettre tous dans un TreeView. Cela fonctionne comme il se doit.

Mais la chose est - si je choisis une tâche de TreeView, comment vais-je la trouver à partir du Project? J'ai pensé à une sorte de clé étrangère (qui serait la clé de TreeNode?), Mais comme j'utilise XML pour la sérialisation, ce n'est pas possible.

Alors, que dois-je faire?

Répondre

3

Je mettrais une référence à l'objet "Task" dans le membre Tag de chaque TreeNode. Il devient alors très facile de convertir le tag en tâche et d'utiliser la tâche lors de la gestion de n'importe quel événement Tree.

+0

Refusée. La solution la plus simple toujours la meilleure :) – arbiter

1

Vous devez attribuer à chaque tâche une clé unique (les stocker dans un dictionnaire), puis définir cette valeur int sur la balise TreeNode.

1

Chaque nœud d'arbre possède la propriété FullPath (qui représente le chemin de la racine au nœud), vous pouvez créer un dictionnaire et le remplir avec vos tâches, en utilisant FullPath comme clé. Ensuite, lorsque le nœud clique, vous prenez le nœud FullPath et extrayez la tâche du dictionnaire.