Raccoom.Windows.Forms.TreeViewFolderBrowser.OnBeforeCheck C# (CSharp) Method

OnBeforeCheck() protected method

Fired before check action occurs, manages the folderList_.
protected OnBeforeCheck ( System.Windows.Forms.TreeViewCancelEventArgs e ) : void
e System.Windows.Forms.TreeViewCancelEventArgs
return void
        protected override void OnBeforeCheck(TreeViewCancelEventArgs e)
        {
            // check suppress flag
              if (IsCheckEventSupressed)
              {
            base.OnBeforeCheck(e);
            return;
              }
              // get current action
              bool check = !e.Node.Checked;
              // is it allowed to check item ?
              if ((CheckboxBehaviorMode == CheckboxBehaviorMode.RecursiveChecked) & (!check) & (e.Node.Parent != null) &&
              (e.Node.Parent.Checked))
              {
            e.Cancel = true;
            base.OnBeforeCheck(e);
            return;
              }
              // set supress flag
              SupressCheckEvent(true);
              // stop drawing tree content
              BeginUpdate();
              // set cursor
              Cursor.Current = Cursors.WaitCursor;
              //
              try
              {
            // add or remove path
            ExchangePath(((TreeNodePath)e.Node).Path, check);
            // handle recursive behaviour
            if (CheckboxBehaviorMode == CheckboxBehaviorMode.RecursiveChecked)
            {
              // remove all childs from folderList_
              ExchangeFoldersRec(e.Node as TreeNodePath, false);
              // check child nodes to reflect parent check state
              CheckNodesRec(e.Node, check);
            }
            // update marked nodes fonts
            MarkNodesRec(e.Node.Parent as TreeNodePath);
              }
              catch (Exception ex)
              {
            // ups, exception ?
            Console.WriteLine(ex.Message);
              }
              finally
              {
            // reset supress flag
            SupressCheckEvent(false);
            // let the tree redraw his content
            EndUpdate();
            // reset the cursor
            Cursor.Current = Cursors.Default;
              }
              //
              base.OnBeforeCheck(e);
        }