public virtual void Select(bool add)
 {
     if (!add)
     {
         if (this.Parent != null && !this.Parent.IsExpanded)
         {
             MultiSelectTreeNode node = this.Parent as MultiSelectTreeNode;
             for (; node != null; node = (node.Parent as MultiSelectTreeNode))
             {
                 node.Expand();
             }
         }
     }
     if (selected != true)
     {
         selected = true;
     }
     if (!add)
     {
         if (!(this.TreeView as MultiSelectTreeView).SelectedNodes.Contains(this))
         {
             (this.TreeView as MultiSelectTreeView).AddSelectedNode(this);
         }
     }
     RepaintNode();
 }