private void createLayoutControl() { LayoutControl lc = this.layoutControl1; // new LayoutControl( ); LayoutControlGroup rg = Form1.configRootGroup(lc, "DataStore Connection"); { lc.Dock = System.Windows.Forms.DockStyle.Fill; LayoutControlItem item1 = rg.AddItem( ); { item1.Name = "lciName"; item1.Text = "Name"; Control textBox1 = item1.Control = new TextEdit( ); { textBox1.Name = "TextBox1"; } } TabbedControlGroup tg = rg.AddTabbedGroup( ); { tg.Name = "tgg"; LayoutControlGroup lg1 = tg.AddTabPage("Connection") as LayoutControlGroup; { createConnectionStringLayoutControlItem(lg1); createLoginIDLayoutControlItem(lg1); createPasswordLayoutControlItem(lg1); createConnectionPropertiesLayoutControlItem(lg1, this.bindingSource1); } LayoutControlGroup lg2 = tg.AddTabPage("Provider") as LayoutControlGroup; { createSyntaxProviderLayoutControlItem(lg2); createMetadataProviderLayoutControlItem(lg2); } LayoutControlGroup lg3 = tg.AddTabPage("Preview") as LayoutControlGroup; { createSuperToolTipHeaderLayoutControlItem(lg3); createSuperToolTipContentLayoutControlItems(lg3); createSuperToolTipFooterLayoutControlItem(lg3); } LayoutControlGroup lg4 = tg.AddTabPage("Description") as LayoutControlGroup; { createDescriptionLayoutControlItem(lg4); } tg.SelectedTabPage = lg1; } } }
/// <summary> /// 根据对象填充属性字段 /// </summary> /// <param name="groupItem">组项目</param> /// <param name="objType">对象类型</param> private void RetrieveFields(LayoutControlGroup groupItem, Type objType) { UIPublic.ShowWaitingForm(); this.DataLayoutControl.CloseControl(); EditControls.Clear(); this.DataLayoutControl.Clear(true, true); var controller = Controller as ObjectLayoutEditController; if (objType == null) { return; } this.DataLayoutControl.SuspendLayout(); TabbedControlGroup tabbledGroup = null; foreach (PropertyDescriptor propDesc in TypeDescriptor.GetProperties(objType)) { if (!propDesc.IsBrowsable) { continue; } BaseEditController editController = null; Control editControl = null; if (controller != null) { editController = controller.GetPredefinedEditController(propDesc.PropertyType, propDesc.Name); } if (editController == null) { if (propDesc.PropertyType.IsAddon()) { var commonEditController = new CommonObjectEditController(); commonEditController.StartEditProperty(EditValue, propDesc.Name); editController = commonEditController; } else { editController = EditorPublic.GetEditController(propDesc); } } editControl = editController.CreateEditControl(propDesc.PropertyType); if (editControl.GetType().GetProperty("EditValue") == null) { throw new Exception("编辑控件必须实现EditValue属性"); } LayoutControlItem layoutControlItem = null; if (editControl is BaseObjectEditControl) { if (tabbledGroup == null) { tabbledGroup = groupItem.AddTabbedGroup(); } var layoutGroupItem = tabbledGroup.AddTabPage(); layoutGroupItem.Name = "Group_" + propDesc.Name; layoutGroupItem.Text = propDesc.DisplayName; layoutGroupItem.CustomizationFormText = "组_" + propDesc.DisplayName; layoutGroupItem.Padding = new DevExpress.XtraLayout.Utils.Padding(0); layoutControlItem = layoutGroupItem.AddItem(); layoutControlItem.TextLocation = DevExpress.Utils.Locations.Top; } else { layoutControlItem = groupItem.AddItem(); layoutControlItem.TextLocation = DevExpress.Utils.Locations.Left; } EditControls.Add(propDesc, editControl); editControl.Tag = propDesc; editControl.Name = propDesc.Name; layoutControlItem.Control = editControl; layoutControlItem.Name = propDesc.Name; layoutControlItem.Text = propDesc.DisplayName; layoutControlItem.CustomizationFormText = propDesc.DisplayName; if (editControl is BaseObjectEditControl) { layoutControlItem.TextVisible = false; } else { layoutControlItem.TextVisible = true; } } this.DataLayoutControl.ResumeLayout(); this.DataLayoutControl.SetDefaultLayout(); // 读取布局数据 if (controller != null && controller.LayoutData.IsNotNullOrEmpty()) { this.DataLayoutControl.SetLayoutData(controller.LayoutData); } UIPublic.CloseWaitingForm(); }