public void Execute() { // ToList确保在遍历时可以修改 _oldRowCount = _network.RowCount; _network.RowCount++; var movedElements = _network.GetElements().Where(e => e.Y >= _rowNumber).ToList().OrderBy(x => { return(x.Y); }).Reverse(); var movedVLines = _network.GetVerticalLines().Where(e => e.Y >= _rowNumber).ToList().OrderBy(x => { return(x.Y); }).Reverse(); foreach (var ele in movedElements) { _network.RemoveEle(ele.X, ele.Y); ele.Y++; _network.ReplaceEle(ele); } foreach (var vline in movedVLines) { _network.RemoveVLine(vline.X, vline.Y); vline.Y++; _network.ReplaceVLine(vline); } //_network.INVModel.Setup(_network); // 将梯形图光标移到新生成的行的头部 _network.AcquireSelectRect(); LadderDiagramViewModel ldvmodel = _network.LDVModel; ldvmodel.SelectionRect.X = 0; ldvmodel.SelectionRect.Y = _rowNumber; ldvmodel.ProjectModel.IFacade.NavigateToNetwork( new NavigateToNetworkEventArgs( _network.NetworkNumber, ldvmodel.ProgramName, ldvmodel.SelectionRect.X, ldvmodel.SelectionRect.Y)); }
public void Redo() { _network.RemoveElements(_removedElements); _network.RemoveVerticalLines(_removedVerticalLines); var movedElements = _network.GetElements().Where(e => e.Y > _startRow + _count - 1).ToList().OrderBy(x => { return(x.Y); }); var movedVLines = _network.GetVerticalLines().Where(e => e.Y > _startRow + _count - 1).ToList().OrderBy(x => { return(x.Y); }); foreach (var ele in movedElements) { _network.RemoveEle(ele.X, ele.Y); ele.Y -= _count; _network.ReplaceEle(ele); } foreach (var vline in movedVLines) { _network.RemoveVLine(vline.X, vline.Y); vline.Y -= _count; _network.ReplaceVLine(vline); } InstructionCommentManager.RaiseMappedMessageChangedEvent(); _oldRowCount = _network.RowCount; if (_count == _network.RowCount) { _network.RowCount = 1; } else { _network.RowCount -= _count; } _network.AcquireSelectRect(); LadderDiagramViewModel ldvmodel = _network.LDVModel; ldvmodel.SelectionRect.X = 0; ldvmodel.SelectionRect.Y = (_startRow < _network.RowCount ? _startRow : _startRow - 1); ldvmodel.ProjectModel.IFacade.NavigateToNetwork( new NavigateToNetworkEventArgs( _network.NetworkNumber, ldvmodel.ProgramName, ldvmodel.SelectionRect.X, ldvmodel.SelectionRect.Y)); }