У меня есть сомнения в программировании со структурами catia и создании структуры в виде дерева.Мне удалось создать до 2-х уровней, но они ломаются, когда есть больше уровней.Хотелось бы узнать, как я могу сделать это рекурсивным.Разместить часть моего кода ниже.Спасибо!
private void GetLinks(ProductStructureTypeLib.Product ProdPar, TreeNode rootnode)
{
MytreeView.Nodes.Add(rootnode);
MytreeView.Nodes.Add(rootnode);
if (ProdPar.Products.Count > 0)
{
foreach (ProductStructureTypeLib.Product child in ProdPar.Products)
{
INFITF.Document childDoc = (INFITF.Document)child.ReferenceProduct.Parent;
TreeNode childnode = new TreeNode();
childnode.Text = childDoc.get_Name();
treeList.Add(childDoc.get_Name());
rootnode.Nodes.Add(childnode);//childnode added--level 1
if (!IsDocumentAPart(childDoc))
{
ProductStructureTypeLib.Product prodRoot;
ProductStructureTypeLib.ProductDocument prodDoc;
prodDoc = (ProductStructureTypeLib.ProductDocument)childDoc;
prodRoot = prodDoc.Product;
if (prodRoot.Products.Count > 0)
{
ReadLinksChild(prodRoot, childnode);
}
}
}
}
private void ReadLinksChild(ProductStructureTypeLib.Product ProdPar, TreeNode node)
{
try
{
foreach (ProductStructureTypeLib.Product child in ProdPar.Products)
{
INFITF.Document childDoc = (INFITF.Document)child.ReferenceProduct.Parent;
TreeNode childnode = new TreeNode();
childnode.Text = childDoc.get_Name();
node.Nodes.Add(childnode);//childnode added--level 1
if (!IsDocumentAPart(childDoc))
{
ProductStructureTypeLib.Product prodRoot;
ProductStructureTypeLib.ProductDocument prodDoc;
prodDoc = (ProductStructureTypeLib.ProductDocument)childDoc;
prodRoot = prodDoc.Product;
if (prodRoot.Products.Count > 0)
{
ReadLinkedDocsProductChild(prodRoot, childnode);
}
}
}
}
catch (Exception ex)
{
logs.Info(ex.ToString());
}
}