using System.ComponentModel; namespace System.Windows.Forms { public class TreeNodeCollection : BindingList { private TreeView owner; private TreeNode Parent { get; } internal void SetOwner(TreeView owner) { this.owner = owner; foreach (var item in this) item.SetOwner(owner); } public new TreeNode Add(TreeNode node) { base.Add(node); node.SetOwner(owner); node.SetParent(Parent); return node; } public TreeNode Add(string text) => Add(new TreeNode() { Text = text }); public void AddRange(TreeNode[] nodes) { foreach (var node in nodes) Add(node); } internal TreeNodeCollection(TreeNode parent) => Parent = parent; } }