private void CreateGridCells() { var rows = _collectionProperties["Rows"].Items.ToArray(); PropertiesNodes.Clear(); var rowsContainer = new GridPanelRowConstructor(rows); for (var i = 0; i < rowsContainer.GetRowCount(); i++) { Panels.Add(CreatePanel()); //регистрируем строку грида в инспекторе объектов //создаем контейнер объектов RegisterGridPanelRowInInspector(i); } for (var i = 0; i < Panels.Count(); i++) { _memento.BeginUpdate(); ObjectInspector.FocusedPropertiesNode = PropertiesNodes[i]; var cells = rowsContainer.GetCells(i); //DesignerExtensions.GetCollection(rows[i], "Cells").ToList(); //устанавливаем количество столбцов, соответствующее суммарном количеству столбцов в строке var columnSpan = cells.Select(s => Convert.ToInt32(s.ColumnSpan)).Cast <int>().ToList(); //устанавливаем для строки количество столбцов Panels[i].SetColumnSpan(columnSpan); _memento.EndUpdate(); } }
public void Clear() { if (ObjectInspector != null) { foreach (var propertiesNode in PropertiesNodes) { ObjectInspector.DeleteNode(propertiesNode, true); } } PropertiesNodes.Clear(); Panels.Clear(); Controls.Clear(); }
public void ApplyCollections() { if (PropertiesNodes.Any()) { if (MessageBox.Show("Attention! If proceed, all inner layout will be destroyed. Continue?", "Confirm", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.Cancel) { return; } } Clear(); CreateGridCells(); AlignControls(); }
private void RegisterGridPanelRowInInspector(int i) { _memento.BeginUpdate(); var propertyNode = new PropertiesNode(Panels[i]) { ControlName = ControlRepository.Instance(ObjectInspector).GetName("GridPanelRow"), EnabledLayoutTypes = new List <EnabledItems>(), //запрещено удалять ячейки строки OnRemoveChild = control => { return(false); } }; PropertiesNodes.Add(propertyNode); ObjectInspector.AddNode(propertyNode); _memento.EndUpdate(); }