ScreenToGif.Modern.tvFrames_AfterCheck C# (CSharp) Method

tvFrames_AfterCheck() private method

private tvFrames_AfterCheck ( object sender, TreeViewEventArgs e ) : void
sender object
e TreeViewEventArgs
return void
        private void tvFrames_AfterCheck(object sender, TreeViewEventArgs e)
        {
            if (e.Action != TreeViewAction.Unknown)
            {
                #region If Known Action

                //(Un)check all nodes
                if (e.Node.Name == _parentNodeLabel)
                {
                    foreach (TreeNode node in e.Node.Nodes)
                        node.Checked = e.Node.Checked;
                }
                else
                {
                    //TODO: Make to unselect as well.
                    if (tvFrames.Shift && tvFrames.First != -1) // last != -1 &&
                    {
                        #region If Shift-clicking and first frame selected

                        if (tvFrames.Last == -1)
                        {
                            tvFrames.Last = e.Node.Index;
                        }

                        //Remove the AfterCheck to prevent conflict
                        tvFrames.AfterCheck -= tvFrames_AfterCheck;

                        #region Check all

                        if (tvFrames.First < tvFrames.Last)
                        {
                            for (int i = tvFrames.First; i < tvFrames.Last; i++)
                            {
                                tvFrames.Nodes[0].Nodes[i].Checked = true;
                            }
                        }
                        else
                        {
                            for (int i = tvFrames.First; i > tvFrames.Last; i--)
                            {
                                tvFrames.Nodes[0].Nodes[i].Checked = true;
                            }
                        }

                        #endregion

                        tvFrames.First = e.Node.Index;
                        tvFrames.Last = -1;

                        tvFrames.Shift = false;
                        tvFrames.AfterCheck += tvFrames_AfterCheck;

                        #endregion
                    }
                    else if (!tvFrames.Shift)
                    {
                        tvFrames.First = e.Node.Index;
                        tvFrames.Last = -1;
                    }

                    //Or display the (un)checked frame
                    SelectFrame(e.Node.Index);
                }


                //Select current node
                tvFrames.SelectedNode = e.Node;

                #endregion
            }
        }
Modern