示例#1
0
            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);
            }
示例#2
0
        /// <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);
        }