windowsforms-2251-controls-and-libraries-form-layout-managers-layout-and-data-layout-controls-examples-how-to-create-a-layout-in-regular-mode-in-code.md
WinForms Layout Control - How to Create Layout Items Using Code
The following example shows how to use the LayoutControl to create the following controls arrangement in Regular (default) layout mode (see LayoutGroup.LayoutMode).
Note
To allow a LayoutControl’s layout to be customized and serialized, ensure that the Name properties of the layout items and their controls are set to unique values. The control’s Name property must be initialized before this control is assigned to the LayoutControlItem.Control property.
using DevExpress.XtraEditors;
using DevExpress.XtraLayout;
using DevExpress.XtraLayout.Utils;
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";
Imports DevExpress.XtraEditors
Imports DevExpress.XtraLayout
Imports DevExpress.XtraLayout.Utils
Dim editorName As TextEdit = New TextEdit() With {.Name = "editorName"}
Dim editorAddress As MemoEdit = New MemoEdit() With {.Name = "editorAddress"}
Dim editorEmail As ButtonEdit = New ButtonEdit() With {.Name = "editorEmail"}
Dim editorPicture As PictureEdit = New PictureEdit() With {.Name = "pePhoto"}
Dim editorPhone1 As TextEdit = New TextEdit() With {.Name = "editorPhone1"}
Dim editorPhone2 As TextEdit = New TextEdit() With {.Name = "editorPhone2"}
Dim editorFax As TextEdit = New TextEdit() With {.Name = "editorFax"}
Dim btnOK As SimpleButton = New SimpleButton() With {.Name = "btnOK", .Text = "OK"}
Dim btnCancel As SimpleButton = New SimpleButton() With {.Name = "btnCancel", .Text = "Cancel"}
Dim editorNotes As MemoEdit = New MemoEdit() With {.Name = "editorNotes"}
Dim lc As LayoutControl = New LayoutControl()
lc.Dock = DockStyle.Fill
Me.Controls.Add(lc)
'Create a layout item in the Root group using the LayoutGroup.AddItem method
Dim itemName As LayoutControlItem = lc.Root.AddItem()
itemName.Name = "liName"
itemName.Control = editorName
itemName.Text = "Name"
'Create a layout item using the LayoutControlItem constructor
Dim itemAddress As LayoutControlItem = New LayoutControlItem(lc, editorAddress)
itemAddress.Name = "liAddress"
itemAddress.Text = "Address"
itemAddress.Move(itemName, InsertType.Right)
'Create a layout item using the LayoutControlItem constructor
Dim itemEmail As LayoutControlItem = New LayoutControlItem(lc, editorEmail)
itemEmail.Name = "liEmail"
itemEmail.Text = "E-mail"
itemEmail.Move(itemName, InsertType.Bottom)
'Add the Photo group.
Dim groupPhoto As LayoutControlGroup = lc.Root.AddGroup()
groupPhoto.Name = "lgPhoto"
groupPhoto.Text = "Photo"
'Add a new layout item to the group to display an image.
Dim liPhoto As LayoutControlItem = groupPhoto.AddItem()
liPhoto.Name = "liPhoto"
liPhoto.Control = editorPicture
liPhoto.TextVisible = False
'A tabbed group
Dim tabbedGroup As TabbedControlGroup = lc.Root.AddTabbedGroup(groupPhoto, InsertType.Right)
tabbedGroup.Name = "TabbedGroupPhoneFax"
'Add the Phone group as a tab.
Dim groupPhone As LayoutControlGroup = TryCast(tabbedGroup.AddTabPage(), LayoutControlGroup)
groupPhone.Name = "lgPhone"
groupPhone.Text = "Phone"
Dim liPhone1 As LayoutControlItem = groupPhone.AddItem()
liPhone1.Name = "liPhone1"
liPhone1.Control = editorPhone1
liPhone1.Text = "Phone 1"
Dim liPhone2 As LayoutControlItem = groupPhone.AddItem()
liPhone2.Name = "liPhone2"
liPhone2.Control = editorPhone2
liPhone2.Text = "Phone 2"
'Add an empty resizable region below the last added layout item.
Dim emptySpace11 As EmptySpaceItem = New EmptySpaceItem()
emptySpace11.Parent = groupPhone
'Add the Fax group as a tab.
Dim groupFax As LayoutControlGroup = TryCast(tabbedGroup.AddTabPage(), LayoutControlGroup)
groupFax.Name = "lgFax"
groupFax.Text = "Fax"
Dim liFax As LayoutControlItem = groupFax.AddItem()
liFax.Name = "liFax"
liFax.Control = editorFax
liFax.Text = "Fax"
'Add an empty resizable region below the last added layout item.
Dim emptySpace12 As EmptySpaceItem = 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.
Dim groupButtons As LayoutControlGroup = lc.Root.AddGroup()
groupButtons.Name = "GroupButtons"
groupButtons.GroupBordersVisible = False
Dim emptySpace2 As EmptySpaceItem = New EmptySpaceItem()
emptySpace2.Parent = groupButtons
'Create a layout item (using the LayoutGroup.AddItem method) next to the 'emptySpace2' item
Dim itemOKButton As LayoutControlItem = 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
Dim itemCancelButton As LayoutControlItem = 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.
Dim itemNotes As LayoutControlItem = New LayoutControlItem()
itemNotes.Name = "liNotes"
lc.HiddenItems.AddRange(New BaseLayoutItem() {itemNotes})
itemNotes.Control = editorNotes
itemNotes.Text = "Notes"