windowsforms-2518-controls-and-libraries-ribbon-bars-and-menu-ribbon-items-and-item-links-bar-item-behavior-options.md
For different types of bar item links you need to use different events to implement the required functionality.
When a bar item link that represents a button is clicked, it invokes the BarItem.ItemPress and BarItem.ItemClick events of the corresponding bar item. The ItemPress event occurs before the mouse button is released. The ItemClick event occurs after that. If you want to implement central management for click events, you can subscribe to the RibbonControl’s RibbonControl.ItemPress and RibbonControl.ItemClick events. These events fire when any bar item link is clicked.
For the links that represent check buttons, handle the BarCheckItem.CheckedChanged event to implement specific functionality.
Handle the RibbonControl.ShowCustomizationMenu event to customize a bar item’s context menu.
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.
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");
}
Imports DevExpress.XtraBars
Imports DevExpress.XtraBars.Localization
Private Sub RibbonControl1_ShowCustomizationMenu(sender As Object, e As DevExpress.XtraBars.Ribbon.RibbonCustomizationMenuEventArgs) Handles RibbonControl1.ShowCustomizationMenu
' Check if the context menu is invoked after a link is right-clicked.
If e.Link Is Nothing Then Return
' Locate and hide the "Add to Quick Access Toolbar" command in the context menu
Dim linkAddToQat As BarItemLink = e.CustomizationMenu.ItemLinks.Where(Function(link) link.Caption = BarLocalizer.Active.GetLocalizedString(BarString.RibbonToolbarAdd)).FirstOrDefault()
linkAddToQat.Visible = False
' Check if a custom "About" command has already been created.
Dim menuAboutCommand As BarItemLink = e.CustomizationMenu.ItemLinks.Where(Function(link) link.Caption = "About").FirstOrDefault()
' Add the "About" command.
If menuAboutCommand Is Nothing Then
menuAboutCommand = e.CustomizationMenu.AddItem(GetAboutCommand())
' Add a separator before the command.
menuAboutCommand.BeginGroup = True
End If
End Sub
Private biAbout As BarItem = Nothing
Private Function GetAboutCommand() As BarItem
If biAbout Is Nothing Then
biAbout = New BarButtonItem()
biAbout.Caption = "About"
AddHandler biAbout.ItemClick, AddressOf biAbout_ItemClick
RibbonControl1.Items.Add(biAbout)
End If
Return biAbout
End Function
' The method invoked when the "About" command is clicked.
Private Sub biAbout_ItemClick(ByVal sender As System.Object,
ByVal e As DevExpress.XtraBars.ItemClickEventArgs)
MessageBox.Show("About")
End Sub