Back to Devexpress

PopupMenuShowingEventArgs.Menu Property

windowsforms-devexpress-dot-xtragrid-dot-views-dot-grid-dot-popupmenushowingeventargs-bd13d8b8.md

latest18.2 KB
Original Source

PopupMenuShowingEventArgs.Menu Property

Gets or sets the popup menu that is about to be displayed.

Namespace : DevExpress.XtraGrid.Views.Grid

Assembly : DevExpress.XtraGrid.v25.2.dll

NuGet Packages : DevExpress.Win.Grid, DevExpress.Win.Navigation

Declaration

csharp
public GridViewMenu Menu { get; set; }
vb
Public Property Menu As GridViewMenu

Property Value

TypeDescription
DevExpress.XtraGrid.Menu.GridViewMenu

The menu that is about to be displayed.

|

Remarks

The Menu property allows you to add, remove, and customize items in the currently processed popup menu. To identify the type of the menu, use PopupMenuShowingEventArgs.MenuType.

The Data Grid does not display empty popup menus. Thus, if you remove all items from the menu, this menu will not be displayed after your PopupMenuShowing event handler is complete.

When you right-click within a row or group row, the Data Grid creates an empty menu and fires the PopupMenuShowing event (the event’s PopupMenuShowingEventArgs.MenuType parameter is set to Row ). If you leave this menu intact (empty), it will not be displayed. To add new menu items to this and other menus, use the Menu.Items.Add method. See an example below.

To access the existing menu items, you can iterate through the Menu.Items collection, or use the Menu.Find and Menu.FindAll methods. To hide or remove certain menu items, use the Menu.Hide and Menu.Remove methods. When searching for a target menu item, you need to know the menu item identifier, which you can find by reading the item’s DXMenuItem.Tag property. You can also see the Menu Item Identifiers section below to learn the available menu item identifiers for the built-in menus.

The menu items can be the following objects:

Use these objects’ settings to change item captions, images, visibility, enabled state, etc.

The DXMenuItem.Tag properties store the menu item identifiers for the default menu items.

When you create a custom menu item, use the item’s DXMenuItem.Tag property to store any custom data with which you may need to identify the item or process the item’s click event.

The four tables below show the menu item identifiers (contents of the DXMenuItem.Tag properties) in Data Grid’s built-in menus.

Column Header Menu (DevExpress.XtraGrid.Menu.GridViewColumnMenu)

When handling the PopupMenuShowing and GridMenuItemClick events, you can identify this menu type using the e.MenuType event parameter, which is set to GridMenuType.Column

The Tag properties of the items in this menu can be the following objects:

  • DevExpress.XtraGrid.Localization.GridStringId

  • DevExpress.XtraEditors.Controls.StringId

  • GridGroupSummaryItem

  • DevExpress.XtraGrid.ColumnGroupInterval

|

Menu Item

|

Tag

| | --- | --- | |

Full Expand

|

DevExpress.XtraGrid.Localization.GridStringId.MenuGroupPanelFullExpand

| |

Full Collapse

|

DevExpress.XtraGrid.Localization.GridStringId.MenuGroupPanelFullCollapse

| |

Sort Ascending

|

DevExpress.XtraGrid.Localization.GridStringId.MenuColumnSortAscending

| |

Sort Descending

|

DevExpress.XtraGrid.Localization.GridStringId.MenuColumnSortDescending

| |

Sort by Summary (sub-menu)

|

DevExpress.XtraGrid.Localization.GridStringId.MenuColumnSortGroupBySummaryMenu

The Tag properties of this submenu’s items contain GridGroupSummaryItem objects, which identify corresponding summary functions.

| |

Group By This Column

|

DevExpress.XtraGrid.Localization.GridStringId.MenuColumnGroup

| |

UnGroup

|

DevExpress.XtraGrid.Localization.GridStringId.MenuColumnUnGroup

| |

Hide Group By Box

|

DevExpress.XtraGrid.Localization.GridStringId.MenuColumnGroupBox

| |

Show Group By Box

|

DevExpress.XtraGrid.Localization.GridStringId.MenuColumnGroupBox

| |

Split

|

DevExpress.XtraGrid.Localization.GridStringId.MenuShowSplitItem

| |

Remove Split

|

DevExpress.XtraGrid.Localization.GridStringId.MenuHideSplitItem

| |

Group Interval (sub-menu)

|

DevExpress.XtraGrid.Localization.GridStringId.MenuColumnGroupIntervalMenu

| |

Day

|

DevExpress.XtraGrid.ColumnGroupInterval.Default

| |

Month

|

DevExpress.XtraGrid.ColumnGroupInterval.DateMonth

| |

Year

|

DevExpress.XtraGrid.ColumnGroupInterval.DateYear

| |

Smart

|

DevExpress.XtraGrid.ColumnGroupInterval.DateRange

| |

Group Summary Editor…

|

DevExpress.XtraGrid.Localization.GridStringId.MenuColumnGroupSummaryEditor

| |

Hide This Column

|

DevExpress.XtraGrid.Localization.GridStringId.MenuColumnRemoveColumn

| |

Column Chooser

|

DevExpress.XtraGrid.Localization.GridStringId.MenuColumnColumnCustomization

| |

Best Fit

|

DevExpress.XtraGrid.Localization.GridStringId.MenuColumnBestFit

| |

Best Fit (all columns)

|

DevExpress.XtraGrid.Localization.GridStringId.MenuColumnBestFitAllColumns

| |

Filter Editor…

|

DevExpress.XtraGrid.Localization.GridStringId.MenuColumnFilterEditor

| |

Show Find Panel

|

DevExpress.XtraGrid.Localization.GridStringId.MenuColumnFindFilterShow

| |

Hide Find Panel

|

DevExpress.XtraGrid.Localization.GridStringId.MenuColumnFindFilterHide

| |

Show Auto Filter Row

|

DevExpress.XtraGrid.Localization.GridStringId.MenuColumnAutoFilterRowShow

| |

Hide Auto Filter Row

|

DevExpress.XtraGrid.Localization.GridStringId.MenuColumnAutoFilterRowHide

| |

Conditional Formatting (sub-menu)

|

DevExpress.XtraGrid.Localization.GridStringId.MenuColumnConditionalFormatting

| |

Highlight Cell Rules (sub-menu)

|

DevExpress.XtraEditors.Controls.StringId.FormatRuleMenuItemHighlightCellRules

| |

Greater Than…

|

DevExpress.XtraEditors.Controls.StringId.FormatRuleMenuItemGreaterThan

| |

Less Than…

|

DevExpress.XtraEditors.Controls.StringId.FormatRuleMenuItemLessThan

| |

Between…

|

DevExpress.XtraEditors.Controls.StringId.FormatRuleMenuItemBetween

| |

Equal To…

|

DevExpress.XtraEditors.Controls.StringId.FormatRuleMenuItemEqualTo

| |

Text that Contains…

|

DevExpress.XtraEditors.Controls.StringId.FormatRuleMenuItemTextThatContains

| |

A Date Occurring…

|

DevExpress.XtraEditors.Controls.StringId.FormatRuleMenuItemDateOccurring

| |

Custom Condition…

|

DevExpress.XtraEditors.Controls.StringId.FormatRuleMenuItemCustomCondition

| |

Top/Bottom Rules (sub-menu)

|

DevExpress.XtraEditors.Controls.StringId.FormatRuleMenuItemTopBottomRules

| |

Top 10 Items…

|

DevExpress.XtraEditors.Controls.StringId.FormatRuleMenuItemTop10Items

| |

Bottom 10 Items…

|

DevExpress.XtraEditors.Controls.StringId.FormatRuleMenuItemBottom10Items

| |

Unique/Duplicate Rules (sub-menu)

|

DevExpress.XtraEditors.Controls.StringId.FormatRuleMenuItemUniqueDuplicateRules

| |

Unique Values…

|

DevExpress.XtraEditors.Controls.StringId.FormatRuleMenuItemUnique

| |

Duplicate Values…

|

DevExpress.XtraEditors.Controls.StringId.FormatRuleMenuItemDuplicate

| |

Manage Rules…

|

DevExpress.XtraEditors.Controls.StringId.FormatRuleMenuItemManageRules

| |

Show Footer

|

DevExpress.XtraGrid.Localization.GridStringId.MenuFooterShow

| |

Hide Footer

|

DevExpress.XtraGrid.Localization.GridStringId.MenuFooterHide

|

Group Panel Menu (DevExpress.XtraGrid.Menu.GridViewGroupPanelMenu)

When handling the PopupMenuShowing and GridMenuItemClick events, you can identify this menu type using the e.MenuType event parameter, which is set to GridMenuType.Group

The Tag properties of the items in this menu contain DevExpress.XtraGrid.Localization.GridStringId enumeration values.

Menu ItemTag
Full ExpandDevExpress.XtraGrid.Localization.GridStringId.MenuGroupPanelFullExpand
Full CollapseDevExpress.XtraGrid.Localization.GridStringId.MenuGroupPanelFullCollapse
Clear GroupingDevExpress.XtraGrid.Localization.GridStringId.MenuGroupPanelClearGrouping
Hide Group By BoxDevExpress.XtraGrid.Localization.GridStringId.MenuColumnGroupBox
SplitDevExpress.XtraGrid.Localization.GridStringId.MenuShowSplitItem
Remove SplitDevExpress.XtraGrid.Localization.GridStringId.MenuHideSplitItem

Important

The e.Menu.Remove method (PopupMenuShowing event) accepts DevExpress.XtraGrid.Localization.GridStringId as a parameter. The method does not work for menu items with dynamic names (for example, “Group Panel Hide”, “Group Panel Show”).

csharp
// This code has no effect.
e.Menu.Remove(DevExpress.XtraGrid.Localization.GridStringId.MenuGroupPanelHide);
e.Menu.Remove(DevExpress.XtraGrid.Localization.GridStringId.MenuGroupPanelShow);
// This code works as expected.
e.Menu.Remove(DevExpress.XtraGrid.Localization.GridStringId.MenuColumnGroupBox);

Summary Menu (DevExpress.XtraGrid.Menu.GridViewFooterMenu)

When handling the PopupMenuShowing and GridMenuItemClick events, you can identify this menu type using the e.MenuType event parameter, which is set to GridMenuType.Summary

The Tag properties of the items in this menu contain DevExpress.XtraGrid.Localization.GridStringId enumeration values.

Menu ItemTag
Add New Summary (sub-menu)DevExpress.XtraGrid.Localization.GridStringId.MenuFooterAddSummaryItem
SumDevExpress.XtraGrid.Localization.GridStringId.MenuFooterSum
MinDevExpress.XtraGrid.Localization.GridStringId.MenuFooterMin
MaxDevExpress.XtraGrid.Localization.GridStringId.MenuFooterMax
CountDevExpress.XtraGrid.Localization.GridStringId.MenuFooterCount
AverageDevExpress.XtraGrid.Localization.GridStringId.MenuFooterAverage
NoneDevExpress.XtraGrid.Localization.GridStringId.MenuFooterNone
Clear Summary ItemsDevExpress.XtraGrid.Localization.GridStringId.MenuFooterClearSummaryItems

Auto Filter Row Menu

When handling the PopupMenuShowing and GridMenuItemClick events, you can identify this menu type using the e.MenuType event parameter, which is set to GridMenuType.AutoFilter.

The Tag properties of the items in this menu contain DevExpress.XtraEditors.ColumnAutoFilterCondition enumeration values.

Menu ItemTag
Clear Filternull
EqualsDevExpress.XtraEditors.ColumnAutoFilterCondition.Equals
Does not equalDevExpress.XtraEditors.ColumnAutoFilterCondition.DoesNotEqual
ContainsDevExpress.XtraEditors.ColumnAutoFilterCondition.Contains
Does not containDevExpress.XtraEditors.ColumnAutoFilterCondition.DoesNotContain
Is likeDevExpress.XtraEditors.ColumnAutoFilterCondition.Like
Is not likeDevExpress.XtraEditors.ColumnAutoFilterCondition.NotLike
Begins withDevExpress.XtraEditors.ColumnAutoFilterCondition.BeginsWith
Ends withDevExpress.XtraEditors.ColumnAutoFilterCondition.EndsWith
Is greater thanDevExpress.XtraEditors.ColumnAutoFilterCondition.Greater
Is greater than or equal toDevExpress.XtraEditors.ColumnAutoFilterCondition.GreaterOrEqual
Is less thanDevExpress.XtraEditors.ColumnAutoFilterCondition.Less
Is less than or equal toDevExpress.XtraEditors.ColumnAutoFilterCondition.LessOrEqual

Example

The following code sample creates a menu item that fixes the column to the left. This item is added to the column header’s context menu next to the Hide This Column item:

csharp
void gridView1_PopupMenuShowing(object sender, PopupMenuShowingEventArgs e) {
    if (e.MenuType == GridMenuType.Column) {
        DXMenuItem item = new DXMenuItem("Fix/Unfix This Column", (s, args) => {
            GridColumn column = (s as DXMenuItem).Tag as GridColumn;
            if (column.Fixed == FixedStyle.Left)
                column.Fixed = FixedStyle.None;
            else column.Fixed = FixedStyle.Left;
        });
        item.Tag = e.HitInfo.Column;
        int index = e.Menu.Items.IndexOf(e.Menu.Find(GridStringId.MenuColumnRemoveColumn));
        e.Menu.Items.Insert(index + 1, item);
    }
}
vb
Private Sub gridView1_PopupMenuShowing(ByVal sender As Object, ByVal e As PopupMenuShowingEventArgs)
    If e.MenuType = GridMenuType.Column Then
        Dim item As DXMenuItem = New DXMenuItem("Fix/Unfix This Column", Function(s, args)
            Dim column As GridColumn = TryCast((TryCast(s, DXMenuItem)).Tag, GridColumn)

            If column.Fixed = FixedStyle.Left Then
                column.Fixed = FixedStyle.None
            Else
                column.Fixed = FixedStyle.Left
            End If
        End Function)
        item.Tag = e.HitInfo.Column
        Dim index As Integer = e.Menu.Items.IndexOf(e.Menu.Find(GridStringId.MenuColumnRemoveColumn))
        e.Menu.Items.Insert(index + 1, item)
    End If
End Sub

Refer to the following help topic for more information: Modify Built-In Context Menus.

The following code snippets (auto-collected from DevExpress Examples) contain references to the Menu property.

Note

The algorithm used to collect these code examples remains a work in progress. Accordingly, the links and snippets below may produce inaccurate results. If you encounter an issue with code examples below, please use the feedback form on this page to report the issue.

winforms-grid-customize-footer-menu-calculate-custom-totals/CS/Form1.cs#L51

csharp
DevExpress.XtraGrid.Menu.GridViewFooterMenu footerMenu = e.Menu as DevExpress.XtraGrid.Menu.GridViewFooterMenu;
bool check = e.HitInfo.Column.SummaryItem.SummaryType == DevExpress.Data.SummaryItemType.Custom && Equals("Count", e.HitInfo.Column.SummaryItem.Tag);

connect-winforms-grid-to-webapi-service/CS/WinForms.Client/MainForm.cs#L22

csharp
private void GridView1_PopupMenuShowing(object sender, DevExpress.XtraGrid.Views.Grid.PopupMenuShowingEventArgs e) {
    if(e.Menu != null) {
        foreach(DXMenuItem d in e.Menu.Items) {

connect-winforms-grid-to-backend-using-middletier-server/CS/WinForms.Client/MainForm.cs#L78

csharp
private void GridView_PopupMenuShowing(object sender, DevExpress.XtraGrid.Views.Grid.PopupMenuShowingEventArgs e) {
    e.Menu?.Remove(DevExpress.XtraGrid.Localization.GridStringId.MenuColumnFilterEditor);
}

winforms-grid-customize-footer-menu-calculate-custom-totals/VB/Form1.vb#L44

vb
If e.MenuType <> GridMenuType.Summary Then Return
Dim footerMenu As DevExpress.XtraGrid.Menu.GridViewFooterMenu = TryCast(e.Menu, DevExpress.XtraGrid.Menu.GridViewFooterMenu)
Dim check As Boolean = e.HitInfo.Column.SummaryItem.SummaryType = DevExpress.Data.SummaryItemType.Custom AndAlso Equals("Count", e.HitInfo.Column.SummaryItem.Tag)

connect-winforms-grid-to-backend-using-middletier-server/VB/WinForms.Client/MainForm.vb#L50

vb
Private Sub GridView_PopupMenuShowing(ByVal sender As Object, ByVal e As Views.Grid.PopupMenuShowingEventArgs)
    e.Menu?.Remove(Localization.GridStringId.MenuColumnFilterEditor)
End Sub

See Also

PopupMenuShowingEventArgs Class

PopupMenuShowingEventArgs Members

DevExpress.XtraGrid.Views.Grid Namespace