// Recursive! :o private void ProcessInventoryItems(ArrayList list, TreeNode node) { if (list == null) return; foreach (InventoryBase item in list) { if (item is InventoryFolder) { InventoryFolder folder = (InventoryFolder)item; TreeNode nextNode = node.Nodes.Add(folder.FolderID.ToString(), folder.Name); this.ProcessInventoryItems(folder.alContents, nextNode); } else if (item is InventoryItem) { InventoryItem invItem = (InventoryItem)item; node.Nodes.Add(invItem.AssetID.ToString(), invItem.Name); } } }