Skip to main content

How to: Customize a RibbonControl's Customization Menu

  • 2 minutes to read

The following example handles the RibbonControl.ShowCustomizationMenu event to customize the RibbonControl’s context menu.

The example hides the built-in “Add to Quick Access Toolbar” command, and adds a custom “About” command to the menu.

RibbonControl - Customized Context Menu

using DevExpress.XtraBars;
using DevExpress.XtraBars.Localization;

private void ribbonControl1_ShowCustomizationMenu(object sender, DevExpress.XtraBars.Ribbon.RibbonCustomizationMenuEventArgs e) {
    // Check if the context menu is invoked after a link is right-clicked.
    if (e.Link == null) return;
    // Locate and hide the "Add to Quick Access Toolbar" command in the context menu
    BarItemLink linkAddToQat = e.CustomizationMenu.ItemLinks.Where(link => link.Caption == BarLocalizer.Active.GetLocalizedString(BarString.RibbonToolbarAdd)).FirstOrDefault();
    linkAddToQat.Visible = false;

    // Check if a custom "About" command has already been created.
    BarItemLink menuAboutCommand = e.CustomizationMenu.ItemLinks.Where(link => link.Caption == "About").FirstOrDefault();
    // Add the "About" command.
    if (menuAboutCommand == null) {
        menuAboutCommand = e.CustomizationMenu.AddItem(GetAboutCommand());
        // Add a separator before the command.
        menuAboutCommand.BeginGroup = true;
    }
}

BarItem biAbout;
BarItem GetAboutCommand() {
    if (biAbout == null) {
        biAbout = new BarButtonItem();
        biAbout.Caption = "About";
        biAbout.ItemClick += new ItemClickEventHandler(biAbout_ItemClick);
        ribbonControl1.Items.Add(biAbout);
    }
    return biAbout;
}
// The method invoked when the "About" command is clicked.
void biAbout_ItemClick(object sender, ItemClickEventArgs e) {
    MessageBox.Show("About");
}