2009-06-29 3 views
1

Also - die Arbeit mit C# und Windows Forms, ich habe eine Reihe von "Task" Klassen. Jede Klasse hat ein List<Task>, so dass sie eine beliebige Anzahl von Kindern haben können (und die Kinder können natürlich mehr Kinder haben ...)Associating Windows Forms TreeView Artikel zu aktuellen Daten

Diese Aufgaben werden in einer „Projekt“ Klasse gespeichert (in einem List<Task>, natürlich), Das wird dann in XML serialisiert. Ich habe eine Funktion, um durch die Aufgaben zu rekrutieren und sie alle in ein TreeView zu setzen. Es funktioniert genau so, wie es sollte.

Aber die Sache ist - wenn ich eine Aufgabe aus der TreeView wählen, wie finde ich es aus den Project? Ich dachte an eine Art von Fremdschlüssel (die die TreeNode der Schlüssel sein?), Aber da ich XML für die Serialisierung verwendet werde, das ist nicht möglich.

Also, was soll ich tun?

Antwort

3

würde ich einen Verweis auf die „Aufgabe“ Objekt im Tag-Element jedes TreeNode setzen. Es wird dann sehr einfach, das Tag zu einer Aufgabe zu machen und die Aufgabe zu verwenden, wenn ein Baum-Ereignis behandelt wird.

+0

upvoted. Einfachste Lösung immer die Beste :) – arbiter

1

Sie haben jede Aufgabe einen eindeutigen Schlüssel zu geben (speichern sie in einem Wörterbuch), stellen Sie dann, dass int Wert auf die Tag-TreeNode.

1

Jeder Baumknoten verfügt über die Eigenschaft FullPath (die den Pfad vom Stamm zum Knoten darstellt). Sie können ein Wörterbuch erstellen und es mit Ihren Aufgaben füllen, wobei Sie FullPath als Schlüssel verwenden. Wenn Sie dann auf den Knoten klicken, nehmen Sie den Knoten FullPath und extrahieren die Aufgabe aus dem Wörterbuch.