windowsforms-5689-controls-and-libraries-tree-list-feature-center-context-menus-custom-menus.md
You can use the TreeList.PopupMenuShowing event to display custom menus when a user right-clicks a specific tree list element.
Common concepts for custom context menus are listed in the following help topic: Custom Context Menus.
The following code sample invokes a custom context menu when a user right-clicks a column header:
Add a BarManager to the form and create a custom PopupMenu as demonstrated in the following help topic: Popup Menus:
Handle the TreeList.PopupMenuShowing event and call the e.ShowCustomMenu method to display your custom menu instead of the default menu.
void TreeList1_PopupMenuShowing(object sender, PopupMenuShowingEventArgs e) {
if (e.MenuType == TreeListMenuType.Column) {
popupMenu_Column.Tag = e.HitInfo;
popupMenu_Column.MenuCaption = $"{e.HitInfo.Column}";
e.ShowCustomMenu(popupMenu_Column);
}
}
TreeListHitInfo GetHitInfo(BarItemLink link) {
PopupMenu menu = link.LinkedObject as PopupMenu;
return menu.Tag as TreeListHitInfo;
}
void barButtonItem_Filter_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) {
TreeListHitInfo info = GetHitInfo(e.Link);
info.Column.TreeList.ShowFilterEditor(info.Column);
}
void barButtonItem_ColumnChooser_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) {
TreeListHitInfo info = GetHitInfo(e.Link);
info.Column.TreeList.ShowCustomization();
}
Private Sub TreeList1_PopupMenuShowing(ByVal sender As Object, ByVal e As PopupMenuShowingEventArgs)
If e.MenuType = TreeListMenuType.Column Then
popupMenu_Column.Tag = e.HitInfo
popupMenu_Column.MenuCaption = $"{e.HitInfo.Column}"
e.ShowCustomMenu(popupMenu_Column)
End If
End Sub
Private Function GetHitInfo(ByVal link As BarItemLink) As TreeListHitInfo
Dim menu As PopupMenu = TryCast(link.LinkedObject, PopupMenu)
Return TryCast(menu.Tag, TreeListHitInfo)
End Function
Private Sub barButtonItem_Filter_ItemClick(ByVal sender As Object, ByVal e As DevExpress.XtraBars.ItemClickEventArgs)
Dim info As TreeListHitInfo = GetHitInfo(e.Link)
info.Column.TreeList.ShowFilterEditor(info.Column)
End Sub
Private Sub barButtonItem_ColumnChooser_ItemClick(ByVal sender As Object, ByVal e As DevExpress.XtraBars.ItemClickEventArgs)
Dim info As TreeListHitInfo = GetHitInfo(e.Link)
info.Column.TreeList.ShowCustomization()
End Sub
See Also