protected override void OnKeyDown(object sender, System.Windows.Forms.KeyEventArgs e) { Block nextFocusable = null; if (IsMoveUpDown(e)) { e.Handled = true; return; } switch (e.KeyCode) { case System.Windows.Forms.Keys.Right: nextFocusable = this.FindFirstFocusableChild(); if (nextFocusable == null) { nextFocusable = this.FindNextFocusableBlockInChain(); } nextFocusable.SetCursorToTheBeginning(); e.Handled = true; return; case System.Windows.Forms.Keys.Down: if (VMembers.Visible && this.MyUniversalControl.LinearLayoutStrategy.Orientation == OrientationType.Vertical) { nextFocusable = VMembers.FindFirstFocusableBlock(); if (nextFocusable != null) { nextFocusable.SetFocus(); e.Handled = true; return; } } break; case System.Windows.Forms.Keys.End: nextFocusable = HMembers.FindLastFocusableBlock(); if (nextFocusable != null) { nextFocusable.SetCursorToTheEnd(); e.Handled = true; return; } break; default: break; } if (nextFocusable != null && nextFocusable.CanGetFocus) { nextFocusable.SetFocus(); e.Handled = true; } if (!e.Handled) { base.OnKeyDown(sender, e); } }
protected override void OnKeyDown(object sender, System.Windows.Forms.KeyEventArgs e) { Block nextFocusable = null; switch (e.KeyCode) { case System.Windows.Forms.Keys.Left: if (!this.MyControl.Collapsed && this.VMembers.Children.Count > 0) { e.Handled = true; this.MyNodeControl.ToggleCollapse(true); } break; case System.Windows.Forms.Keys.Right: if (this.MyControl.Collapsed) { e.Handled = true; this.MyNodeControl.ToggleCollapse(true); } else { nextFocusable = VMembers.FindFirstFocusableBlock(); } break; case System.Windows.Forms.Keys.Down: if (VMembers.MyControl.Visible && !VMembers.MyControl.Collapsed) { nextFocusable = VMembers.FindFirstFocusableBlock(); } break; case System.Windows.Forms.Keys.End: nextFocusable = HMembers.FindLastFocusableBlock(); break; case System.Windows.Forms.Keys.Add: if (this.MyControl.Collapsed) { e.Handled = true; this.MyNodeControl.ToggleCollapse(true); } break; case System.Windows.Forms.Keys.Subtract: if (!this.MyControl.Collapsed && this.VMembers.Children.Count > 0) { e.Handled = true; this.MyNodeControl.ToggleCollapse(true); } break; case System.Windows.Forms.Keys.Space: e.Handled = true; this.MyNodeControl.ToggleCollapse(true); break; case System.Windows.Forms.Keys.Multiply: e.Handled = true; this.MyNodeControl.CollapseAll(false, true); break; case System.Windows.Forms.Keys.Divide: e.Handled = true; this.MyNodeControl.CollapseAll(true, true); break; case System.Windows.Forms.Keys.Delete: this.Delete(); e.Handled = true; break; default: break; } if (nextFocusable != null && nextFocusable.CanGetFocus) { nextFocusable.SetFocus(); e.Handled = true; } RaiseKeyDown(e); }