public override void Remove(Control value) { base.Remove(value); if (value is SVPanelNode) { return; } //记录重做操作 SVRedoUndoItem recordItem = new SVRedoUndoItem(); recordItem.ReDo = () => { SVPanel panel = value as SVPanel; RedoUndo.setEnabled(false); panel.Selected = false; base.Remove(value); RedoUndo.setEnabled(true); }; recordItem.UnDo = () => { SVPanel panel = value as SVPanel; RedoUndo.setEnabled(false); panel.Selected = false; base.Add(value); RedoUndo.setEnabled(true); }; RedoUndo.recordOper(recordItem); }
/// <summary> /// 控件拖入页面窗口中的事件操作 /// </summary> /// <param Name="e"></param> protected override void OnDragDrop(DragEventArgs e) { if (!e.Data.GetDataPresent(typeof(SVSelectItem))) { return; } ///禁用记录 _redoUndo.setEnabled(false); SVSelectItem item = (SVSelectItem)e.Data.GetData(typeof(SVSelectItem)); SVPanel btn = (SVPanel)(item._obj); btn.setRedoUndoObject(_redoUndo); btn.setParentID(Attrib.id); btn.refreshPropertyToPanel(); btn.Location = this.PointToClient(new Point(e.X, e.Y)); btn.Location = new Point(btn.Location.X - btn.Width / 2, btn.Location.Y - btn.Height / 2); btn.setStartPos(btn.Location); this.Controls.Add(btn); btn.newID(); ChildAddEvent(btn, null); btn.MouseDown += new MouseEventHandler((sder, ev) => { MouseSelectEvent(sder, ev); }); btn.MouseUp += new MouseEventHandler((sder, ev) => { MouseSelectEvent(sder, ev); }); ///启用记录 _redoUndo.setEnabled(true); ///记录重做操作 ///这里只记录控件的添加和删除操作,其他属性的改变并不会被记录下来。 SVRedoUndoItem recordItem = new SVRedoUndoItem(); recordItem.ReDo = () => { _redoUndo.setEnabled(false); btn.Selected = false; this.Controls.Add(btn); _redoUndo.setEnabled(true); }; recordItem.UnDo = () => { _redoUndo.setEnabled(false); btn.Selected = false; this.Controls.Remove(btn); _redoUndo.setEnabled(true); }; ///执行记录 _redoUndo.recordOper(recordItem); }