public override void OnKeyDown(KeyEventArgs e) { if (CurrentSelectNode != null) { if (e.KeyCode == Keys.Enter) { if (e.Shift) { //孩子节点 CurrentSelectNode = CurrentSelectNode.AddNode("子节点"); return; } //兄弟节点 if (CurrentSelectNode == Root) { return; } var node = CurrentSelectNode.Parent.AddNode("子节点"); CurrentSelectNode = node; } else if (e.KeyCode == Keys.Delete) { //删除节点 CurrentSelectNode.Parent.DelNode(CurrentSelectNode); CurrentSelectNode = null; CurrentMoveNode = null; } else if (e.Alt) { if (e.KeyCode == Keys.Up) { AINode.SwapNode(CurrentSelectNode, true); } else if (e.KeyCode == Keys.Down) { AINode.SwapNode(CurrentSelectNode, false); } } } }
public override void OnPaint(PaintEventArgs e) { Init(); //绘制原图 Root.SetGraphics(e.Graphics); Root.CalcNodeHeight(); Root.CalcNodeWidth(); Root.SelfOutRect.X = ClientSize.Width / 2 - Root.NodeOutRect.Width / 2; Root.SelfOutRect.Y = ClientSize.Height / 2; Root.AutoLayout(); Root.DrawNode(); if (CurrentSelectNode != null) { CurrentSelectNode.DrawOutLine(outlinePen); } if (!IsMoving || CurrentMoveNode == null) { return; } //绘制移动的节点 CurrentMoveNode.SelfOutRect.X = MovingPos.X - CurrentMoveNode.SelfOutRect.Width / 2; CurrentMoveNode.SelfOutRect.Y = MovingPos.Y - CurrentMoveNode.SelfOutRect.Height / 2; CurrentMoveNode.DrawSelf(moveBrush, movePen); if (MoveToParentNode == null) { return; } //绘制父节点连线 MoveToParentNode.DrawOutLine(outlinePen); CurrentMoveNode.DrawOutLine(outlinePen); ShapeHelper.DrawConnectLine(e.Graphics, outlinePen, MoveToParentNode.ConnectOutPos, CurrentMoveNode.ConnectInPos); }