Ejemplo n.º 1
0
        public void Redo()
        {
            foreach (var ele in _removedElements)
            {
                _network.RemoveElement(ele);
            }
            foreach (var vline in _removedVerticalLines)
            {
                _network.RemoveVerticalLine(vline);
            }

            // ToList确保在遍历时可以修改
            var movedElements = _network.GetElements().Where(e => e.Y > _rowNumber).ToList();
            var movedVLines   = _network.GetVerticalLines().Where(e => e.Y > _rowNumber).ToList();

            foreach (var ele in movedElements)
            {
                _network.RemoveElement(ele);
                ele.Y--;
                _network.ReplaceElement(ele);
            }
            foreach (var vline in movedVLines)
            {
                _network.RemoveVerticalLine(vline);
                vline.Y--;
                _network.ReplaceVerticalLine(vline);
            }
            _oldRowCount = _network.RowCount;
            _network.RowCount--;
            //_network.INVModel.Setup(_network);
            // 将梯形图光标移到删除的行的位置
            _network.AcquireSelectRect();
            LadderDiagramViewModel ldvmodel = _network.LDVModel;

            ldvmodel.SelectionRect.X = 0;
            ldvmodel.SelectionRect.Y = (_rowNumber < _network.RowCount ? _rowNumber : _rowNumber - 1);
            ldvmodel.ProjectModel.IFacade.NavigateToNetwork(
                new NavigateToNetworkEventArgs(
                    _network.NetworkNumber,
                    ldvmodel.ProgramName,
                    ldvmodel.SelectionRect.X,
                    ldvmodel.SelectionRect.Y));
        }