ZForge.Controls.TreeViewAdv.Tree.NormalInputState.KeyDown C# (CSharp) Method

KeyDown() public method

public KeyDown ( KeyEventArgs args ) : void
args System.Windows.Forms.KeyEventArgs
return void
        public override void KeyDown(KeyEventArgs args)
        {
            if (Tree.CurrentNode == null && Tree.Root.Nodes.Count > 0)
                Tree.CurrentNode = Tree.Root.Nodes[0];

            if (Tree.CurrentNode != null)
            {
                switch (args.KeyCode)
                {
                    case Keys.Right:
                        if (!Tree.CurrentNode.IsExpanded)
                            Tree.CurrentNode.IsExpanded = true;
                        else if (Tree.CurrentNode.Nodes.Count > 0)
                            Tree.SelectedNode = Tree.CurrentNode.Nodes[0];
                        args.Handled = true;
                        break;
                    case Keys.Left:
                        if (Tree.CurrentNode.IsExpanded)
                            Tree.CurrentNode.IsExpanded = false;
                        else if (Tree.CurrentNode.Parent != Tree.Root)
                            Tree.SelectedNode = Tree.CurrentNode.Parent;
                        args.Handled = true;
                        break;
                    case Keys.Down:
                        NavigateForward(1);
                        args.Handled = true;
                        break;
                    case Keys.Up:
                        NavigateBackward(1);
                        args.Handled = true;
                        break;
                    case Keys.PageDown:
                        NavigateForward(Math.Max(1, Tree.CurrentPageSize - 1));
                        args.Handled = true;
                        break;
                    case Keys.PageUp:
                        NavigateBackward(Math.Max(1, Tree.CurrentPageSize - 1));
                        args.Handled = true;
                        break;
                    case Keys.Home:
                        if (Tree.RowMap.Count > 0)
                            FocusRow(Tree.RowMap[0]);
                        args.Handled = true;
                        break;
                    case Keys.End:
                        if (Tree.RowMap.Count > 0)
                            FocusRow(Tree.RowMap[Tree.RowMap.Count-1]);
                        args.Handled = true;
                        break;
                    case Keys.Subtract:
                        Tree.CurrentNode.Collapse();
                        args.Handled = true;
                        args.SuppressKeyPress = true;
                        break;
                    case Keys.Add:
                        Tree.CurrentNode.Expand();
                        args.Handled = true;
                        args.SuppressKeyPress = true;
                        break;
                    case Keys.Multiply:
                        Tree.CurrentNode.ExpandAll();
                        args.Handled = true;
                        args.SuppressKeyPress = true;
                        break;
                }
            }
        }