using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace PckStudio.Core.Extensions { public static class TreeNodeCollectionExtensions { /// /// wrapper that allows the use of in TreeNode.Nodes.Find(, ...) and TreeNode.Nodes.ContainsKey() /// /// /// /// new Created TreeNode public static TreeNode CreateNode(this TreeNodeCollection root, string name, object tag = null) { TreeNode node = new TreeNode(name); node.Name = name; node.Tag = tag; root.Add(node); return node; } public static TreeNode BuildNodeTreeBySeperator(this TreeNodeCollection root, string path, char seperator) { _ = root ?? throw new ArgumentNullException(nameof(root)); if (!path.Contains(seperator)) { return root.CreateNode(path); } string nodeText = path.Substring(0, path.IndexOf(seperator)); string subPath = path.Substring(path.IndexOf(seperator) + 1); if (string.IsNullOrWhiteSpace(nodeText)) { return BuildNodeTreeBySeperator(root, subPath, seperator); } TreeNode subNode = root.ContainsKey(nodeText) ? root[nodeText] : root.CreateNode(nodeText); return BuildNodeTreeBySeperator(subNode.Nodes, subPath, seperator); } } }