public void HighlightNode(Category category, Color color)
 {
     var node = SearchNode(category, RootNode);
     if (node != null)
     {
         node.NodeFont = new Font(treeView1.Font, FontStyle.Bold);
         node.ForeColor = color;
     }
 }
        /// <summary>
        /// Рекурсивно заполняем теги, состоящие из названий категорий
        /// </summary>
        private void FillTagsAndParents(Category category)
        {
            if (!IsNullOrEmpty(category.Name))
            {
                category.Tags.Add(category.Name);
                category.PluginExportString += category.Name;
            }

            if (category.Categories.Count == 0)
                category.PluginExportString = category.PluginExportString.Trim('>');

            category.Categories.ForEach(children =>
            {
                children.Tags.AddRange(category.Tags);
                children.Tags.ForEach(t =>
                {
                    if (!IsNullOrEmpty(t))
                    children.PluginExportString += t + ">";
                });

                children.Parent = category;
            });
        }
        public void LoadTree(Category catalog)
        {
            NodeCollection.Clear();

            var rootNode = new TreeNode(CatalogDictionary.Instance.Catalog.Name)
            {
                Tag = CatalogDictionary.Instance.Catalog
            };
            NodeCollection.Add(rootNode);

            FillTreeView(CatalogDictionary.Instance.Catalog, NodeCollection[0]);
        }
 public void ExpandToNode(Category category)
 {
     var node = SearchNode(category, RootNode);
     ExpandToExactNode(node);
 }
 private TreeNode SearchNode(Category searchCategory, TreeNode startNode)
 {
     TreeNode node = null;
     while (startNode != null)
     {
         if (startNode.Tag == searchCategory)
         {
             node = startNode; //чето нашли, выходим
             break;
         }
         if (startNode.Nodes.Count != 0) //у узла есть дочерние элементы
         {
             node = SearchNode(searchCategory, startNode.Nodes[0]);//ищем рекурсивно в дочерних
             if (node != null)
                 break; //чето нашли
         }
         startNode = startNode.NextNode;
     }
     return node;//вернули результат поиска
 }
 private void FillTreeView(Category category, TreeNode treeNode)
 {
     for (int i = 0; i < category.Categories.Count; i++)
     {
         var newNode = treeNode.Nodes.Add(category.Categories[i].Name);
         newNode.Tag = category.Categories[i];
         FillTreeView(category.Categories[i], treeNode.Nodes[i]);
     }
 }