2009-06-29 3 views
1

그래서 C# 및 Windows Forms에서 작업 할 때 "작업"클래스가 많습니다. 모든 클래스에는 List<Task>이 있으므로 자녀가 몇 명이나있을 수 있습니다.Windows Forms TreeView 항목을 실제 데이터에 연결

이러한 작업은 "프로젝트"클래스 (분명히 List<Task>)에 저장됩니다. XML에 직렬화됩니다. 난 작업을 통해 recurse하고 TreeView에 모두 넣어 기능이 있습니다. 그것은 꼭해야만하는 것처럼 작동합니다.

하지만, 제가 TreeView에서 작업을 선택하면, Project에서 어떻게 찾을 수 있습니까? 어떤 종류의 외래 키 (TreeNode의 키가 될까?)를 생각했지만 직렬화에 XML을 사용하고 있기 때문에 불가능합니다.

그럼 어떻게해야합니까?

답변

3

각 TaskNode의 Tag 멤버에 "Task"개체에 대한 참조를 넣을 것입니다. 그런 다음 Tag를 Task로 캐스팅하고 Tree 이벤트를 처리 할 때 Task를 사용하는 것이 매우 쉽습니다.

+0

Upvoted. 가장 간단한 솔루션은 항상 최고 :) – arbiter

1

각 작업에 고유 한 키 (사전에 저장)를 부여한 다음 해당 int 값을 TreeNode의 태그로 설정해야합니다.

1

모든 트리 노드에는 FullPath 속성 (루트에서 노드까지의 경로를 나타냄)이 있으며, FullPath를 키로 사용하여 사전을 만들어 작업으로 채울 수 있습니다. 그런 다음 노드를 클릭하면 FullPath 노드를 가져 와서 사전에서 작업을 추출합니다.