Populating Popup Menus

  • 3 minutes to read

Populating Popup Menus

When you place a PopupMenu component onto a form at design time, you can use the menu's Editor to add and remove items from it. Right-click the popup menu component and select the Customize option. This invokes the Customization Window that provides access to the available bar items and opens the menu's Editor:

NOTE

Before customizing and using a popup menu, add a BarManager or RibbonControl to the form and ensure that the popup menu is bound to this BarManager/RibbonControl. By default, a popup menu being added to the form at design time automatically looks for a BarManager/Ribbon Control within the form, and if it's found, binds itself to the located object via the PopupMenuBase.Manager/PopupMenuBase.Ribbon property. When creating the menu at runtime, you may need to manually bind it to a is not bound to a BarManager/Ribbon Control via these properties.

The following image shows the Customization Window and a popup menu's Editor:

Popup Menu Customization From

You can use drag and drop to move items from the Customization Window onto the menu, move items within the menu or remove items from the menu. When you place a bar item onto a menu (or a bar), a link to this item is created, and placed within a target component instead of the item. For general information on items and links, refer to the Bar Item Links document.

To manage an item collection for a popup menu via code, use the PopupMenuBase.ItemLinks collection. It allows you to add, remove and access individual items.

Example

This example creates a PopupMenu with three items and binds this menu to the form. You can right-click the form at runtime to invoke the menu.

using DevExpress.XtraBars;
using DevExpress.XtraEditors;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace PopupMenu {
    public partial class Form1 : Form {
        public Form1() {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e) {
            // Finish BarManager initialization (to allow its further customization on the form load)
            barManager1.ForceInitialize();

            DevExpress.XtraBars.PopupMenu menu = new DevExpress.XtraBars.PopupMenu();
            menu.Manager = barManager1;
            barManager1.Images = imageCollection1;
            BarButtonItem itemCopy = new BarButtonItem(barManager1, "Copy", 0);
            BarButtonItem itemPaste = new BarButtonItem(barManager1, "Paste", 1);
            BarButtonItem itemRefresh = new BarButtonItem(barManager1, "Refresh", 2);
            menu.AddItems(new BarItem[] { itemCopy, itemPaste, itemRefresh });
            // Create a separator before the Refresh item.
            itemRefresh.Links[0].BeginGroup = true;
            // Process item clicks.
            barManager1.ItemClick += BarManager1_ItemClick;
            // Associate the popup menu with the form.
            barManager1.SetPopupContextMenu(this, menu);
        }

        private void BarManager1_ItemClick(object sender, ItemClickEventArgs e) {
            XtraMessageBox.Show(e.Item.Caption + " item clicked");
        }
    }
}