private void fillAncestorTreePicker(FamilySearchFamilyTree myFT, TreeNodeCollection myTreeNodeCollection) { PersonParentsState parentsState; List<TreeNode> myParentsTreeNodes; TreeNode node; UserState userState = myFT.ReadCurrentUser(); var startingID = userState.User.PersonId; var personState = (PersonState)myFT.ReadPersonById(startingID); HELPER_updateTextBox(txtStatus, "Collecting direct ancestors... " + personState.Person.DisplayExtension.Name); parentsState = personState.ReadParents(); myParentsTreeNodes = new List<TreeNode>(); foreach (var parentPerson in parentsState.Persons) { HELPER_updateTextBox(txtStatus, "Collecting direct ancestors... " + parentPerson.DisplayExtension.Name); TreeNode aNode = ancestryToTreeNode((PersonState)myFT.ReadPersonById(parentPerson.Id)); myParentsTreeNodes.Add(aNode); } node = new TreeNode(personState.Person.DisplayExtension.Name + ": " + startingID, myParentsTreeNodes.ToArray()); myTreeNodeCollection.Add(node); // Repeat for my Spouce(s) PersonSpousesState spousesState = personState.ReadSpouses(); foreach (var spousePerson in spousesState.Persons) { var spouseId = spousePerson.Id; var spouseState = (PersonState)myFT.ReadPersonById(spouseId); HELPER_updateTextBox(txtStatus, "Collecting direct ancestors... " + spouseState.Person.DisplayExtension.Name); parentsState = spouseState.ReadParents(); myParentsTreeNodes = new List<TreeNode>(); foreach (var parentPerson in parentsState.Persons) { HELPER_updateTextBox(txtStatus, "Collecting direct ancestors... " + parentPerson.DisplayExtension.Name); TreeNode aNode = ancestryToTreeNode((PersonState)myFT.ReadPersonById(parentPerson.Id)); myParentsTreeNodes.Add(aNode); } node = new TreeNode(spousePerson.DisplayExtension.Name + ": " + spouseId, myParentsTreeNodes.ToArray()); myTreeNodeCollection.Add(node); } }