Back to Devexpress

How to: Add new menu item to the Layout Tree View Context Menu

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

latest3.5 KB
Original Source

How to: Add new menu item to the Layout Tree View Context Menu

  • Nov 13, 2018
  • 2 minutes to read

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.

csharp
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;
}
vb
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