windowsforms-2205-controls-and-libraries-form-layout-managers-layout-and-data-layout-controls-examples-how-to-add-new-menu-item-to-the-layout-tree-view-context-menu.md
This example handles the LayoutControl.LayoutTreeViewPopupMenuShowing event to add a command to the Layout Tree View Context Menu to toggle the Bold font attribute of the item text.
using DevExpress.Utils;
using DevExpress.Utils.Menu;
using DevExpress.XtraLayout;
// ...
private void layoutControl1_LayoutTreeViewPopupMenuShowing(object sender, DevExpress.XtraLayout.PopupMenuShowingEventArgs e) {
BaseLayoutItem layoutItem = e.HitInfo.Item as BaseLayoutItem;
if (layoutItem == null) return;
bool isTextBold = layoutItem.AppearanceItemCaption.Font.Bold;
DXMenuCheckItem menuItem = new DXMenuCheckItem("Bold Text", isTextBold, null, new EventHandler(this.ToggleBoldTextMenuItemClick));
menuItem.Image = DxImageAssemblyUtil.ImageProvider.GetImage("Bold", ImageSize.Size16x16, ImageType.Colored);
menuItem.Tag = layoutItem;
//Add a separator
e.Menu.Items.Add(new DXMenuItem("-"));
//Add the "Bold Text" check item.
e.Menu.Items.Add(menuItem);
}
private void ToggleBoldTextMenuItemClick(object sender, EventArgs e) {
DXMenuItem menuItem = sender as DXMenuItem;
BaseLayoutItem layoutItem = menuItem.Tag as BaseLayoutItem;
if (layoutItem == null) return;
bool isTextBold = layoutItem.AppearanceItemCaption.Font.Bold;
Font newFont;
if (isTextBold)
newFont = new Font(layoutItem.AppearanceItemCaption.Font, FontStyle.Regular);
else
newFont = new Font(layoutItem.AppearanceItemCaption.Font, FontStyle.Bold);
layoutItem.AppearanceItemCaption.Font = newFont;
}
Imports DevExpress.Utils
Imports DevExpress.Utils.Menu
Imports DevExpress.XtraLayout
Private Sub LayoutControl1_LayoutTreeViewPopupMenuShowing(sender As Object, e As DevExpress.XtraLayout.PopupMenuShowingEventArgs) Handles LayoutControl1.LayoutTreeViewPopupMenuShowing
Dim layoutItem As BaseLayoutItem = TryCast(e.HitInfo.Item, BaseLayoutItem)
If layoutItem Is Nothing Then
Return
End If
Dim isTextBold As Boolean = layoutItem.AppearanceItemCaption.Font.Bold
Dim menuItem As New DXMenuCheckItem("Bold Text", isTextBold, Nothing, New EventHandler(AddressOf Me.ToggleBoldTextMenuItemClick))
menuItem.Image = DxImageAssemblyUtil.ImageProvider.GetImage("Bold", ImageSize.Size16x16, ImageType.Colored)
menuItem.Tag = layoutItem
'Add a separator
e.Menu.Items.Add(New DXMenuItem("-"))
'Add the "Bold Text" check item.
e.Menu.Items.Add(menuItem)
End Sub
Private Sub ToggleBoldTextMenuItemClick(sender As Object, e As EventArgs)
Dim menuItem As DXMenuItem = TryCast(sender, DXMenuItem)
Dim layoutItem As BaseLayoutItem = TryCast(menuItem.Tag, BaseLayoutItem)
If layoutItem Is Nothing Then
Return
End If
Dim isTextBold As Boolean = layoutItem.AppearanceItemCaption.Font.Bold
Dim newFont As Font
If isTextBold Then
newFont = New Font(layoutItem.AppearanceItemCaption.Font, FontStyle.Regular)
Else
newFont = New Font(layoutItem.AppearanceItemCaption.Font, FontStyle.Bold)
End If
layoutItem.AppearanceItemCaption.Font = newFont
End Sub