using System.Windows.Forms; namespace Volian.Controls.Library { public partial class vlnTreeView3 : TreeView { #region Events public event vlnTreeViewEvent NodeSelectionChange; private void OnNodeSelectionChange(object sender, vlnTreeEventArgs args) => NodeSelectionChange?.Invoke(sender, args); #endregion #region Business Methods #endregion #region Constructors public vlnTreeView3() { InitializeComponent(); base.AfterSelect += new TreeViewEventHandler(tv_AfterSelect); } private void tv_AfterSelect(object sender, TreeViewEventArgs e) => OnNodeSelectionChange(sender, new vlnTreeEventArgs(e.Node)); #endregion private void ExpandMatch(TreeNode tn1, TreeNode tn2) { if (tn2.IsExpanded) tn1.Expand(); foreach (TreeNode tc in tn2.Nodes) ExpandMatch(tn1.Nodes[tc.Index], tc); } private bool IsChild(TreeNode parent, TreeNode child) { if (parent.Equals(child)) return true;// Check against self foreach (TreeNode tc in parent.Nodes) if (IsChild(tc, child)) return true;//Check all children return false;// Must not be a child at this level } } }