DevExpress LayoutControlItem 动态添加
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace DXApp { using DevExpress.XtraEditors; using DevExpress.XtraLayout; using DevExpress.XtraLayout.Utils; public partial class Form1 : DevExpress.XtraEditors.XtraForm { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { TextEdit editorName = new TextEdit() { Name = "editorName" }; MemoEdit editorAddress = new MemoEdit() { Name = "editorAddress" }; ButtonEdit editorEmail = new ButtonEdit() { Name = "editorEmail" }; PictureEdit editorPicture = new PictureEdit() { Name = "pePhoto" }; TextEdit editorPhone1 = new TextEdit() { Name = "editorPhone1" }; TextEdit editorPhone2 = new TextEdit() { Name = "editorPhone2" }; TextEdit editorFax = new TextEdit() { Name = "editorFax" }; SimpleButton btnOK = new SimpleButton() { Name = "btnOK", Text = "OK" }; SimpleButton btnCancel = new SimpleButton() { Name = "btnCancel", Text = "Cancel" }; MemoEdit editorNotes = new MemoEdit() { Name = "editorNotes" }; LayoutControl lc = new LayoutControl(); lc.Dock = DockStyle.Fill; this.Controls.Add(lc); //Create a layout item in the Root group using the LayoutGroup.AddItem method LayoutControlItem itemName = lc.Root.AddItem(); itemName.Name = "liName"; itemName.Control = editorName; itemName.Text = "Name"; //Create a layout item using the LayoutControlItem constructor LayoutControlItem itemAddress = new LayoutControlItem(lc, editorAddress); itemAddress.Name = "liAddress"; itemAddress.Text = "Address"; // Move the layout item to a position next to the 'Name' layout item. itemAddress.Move(itemName, InsertType.Right); //Create a layout item using the LayoutControlItem constructor LayoutControlItem itemEmail = new LayoutControlItem(lc, editorEmail); itemEmail.Name = "liEmail"; itemEmail.Text = "E-mail"; // Move the layout item to a position below the 'Name' layout item. itemEmail.Move(itemName, InsertType.Bottom); // Add the Photo group. LayoutControlGroup groupPhoto = lc.Root.AddGroup(); groupPhoto.Name = "lgPhoto"; groupPhoto.Text = "Photo"; // Add a new layout item to the group to display an image. LayoutControlItem liPhoto = groupPhoto.AddItem(); liPhoto.Name = "liPhoto"; liPhoto.Control = editorPicture; liPhoto.TextVisible = false; //A tabbed group TabbedControlGroup tabbedGroup = lc.Root.AddTabbedGroup(groupPhoto, InsertType.Right); tabbedGroup.Name = "TabbedGroupPhoneFax"; // Add the Phone group as a tab. LayoutControlGroup groupPhone = tabbedGroup.AddTabPage() as LayoutControlGroup; groupPhone.Name = "lgPhone"; groupPhone.Text = "Phone"; LayoutControlItem liPhone1 = groupPhone.AddItem(); liPhone1.Name = "liPhone1"; liPhone1.Control = editorPhone1; liPhone1.Text = "Phone 1"; LayoutControlItem liPhone2 = groupPhone.AddItem(); liPhone2.Name = "liPhone2"; liPhone2.Control = editorPhone2; liPhone2.Text = "Phone 2"; // Add an empty resizable region below the last added layout item. EmptySpaceItem emptySpace11 = new EmptySpaceItem(); emptySpace11.Parent = groupPhone; // Add the Fax group as a tab. LayoutControlGroup groupFax = tabbedGroup.AddTabPage() as LayoutControlGroup; groupFax.Name = "lgFax"; groupFax.Text = "Fax"; LayoutControlItem liFax = groupFax.AddItem(); liFax.Name = "liFax"; liFax.Control = editorFax; liFax.Text = "Fax"; // Add an empty resizable region below the last added layout item. EmptySpaceItem emptySpace12 = new EmptySpaceItem(); emptySpace12.Parent = groupFax; tabbedGroup.SelectedTabPage = groupPhone; // Create a borderless group to display the OK and CANCEL buttons at the bottom of the LayoutControl // If items are combined in a group, their alignmenent is not dependent on the items outside this group. LayoutControlGroup groupButtons = lc.Root.AddGroup(); groupButtons.Name = "GroupButtons"; groupButtons.GroupBordersVisible = false; EmptySpaceItem emptySpace2 = new EmptySpaceItem(); emptySpace2.Parent = groupButtons; //Create a layout item (using the LayoutGroup.AddItem method) next to the 'emptySpace2' item LayoutControlItem itemOKButton = groupButtons.AddItem(emptySpace2, InsertType.Right); itemOKButton.Name = "liButtonOK"; itemOKButton.Control = btnOK; itemOKButton.Text = "OK Button"; itemOKButton.TextVisible = false; itemOKButton.SizeConstraintsType = SizeConstraintsType.Custom; itemOKButton.MaxSize = new Size(200, 25); itemOKButton.MinSize = new Size(90, 25); //Create a layout item (using the LayoutGroup.AddItem method) next to the 'itemOKButton' item LayoutControlItem itemCancelButton = groupButtons.AddItem(itemOKButton, InsertType.Right); itemCancelButton.Name = "liButton"; itemCancelButton.Control = btnCancel; itemCancelButton.Text = "Cancel Button"; itemCancelButton.TextVisible = false; itemCancelButton.SizeConstraintsType = SizeConstraintsType.Custom; itemCancelButton.MaxSize = new Size(200, 25); itemCancelButton.MinSize = new Size(90, 25); // Create a hidden layout item. LayoutControlItem itemNotes = new LayoutControlItem(); itemNotes.Name = "liNotes"; lc.HiddenItems.AddRange(new BaseLayoutItem[] { itemNotes }); itemNotes.Control = editorNotes; itemNotes.Text = "Notes"; } } }
效果: