VGridControlBase.PopupMenuShowing Event
Allows you to customize built-in context menus or invoke custom menus.
Namespace: DevExpress.XtraVerticalGrid
Assembly: DevExpress.XtraVerticalGrid.v24.2.dll
NuGet Packages: DevExpress.Win.Navigation, DevExpress.Win.VerticalGrid
#Declaration
public event PopupMenuShowingEventHandler PopupMenuShowing
#Event Data
The PopupMenuShowing event's data class is PopupMenuShowingEventArgs. The following properties provide information specific to this event:
Property | Description |
---|---|
Allow |
Gets or sets whether to display the context menu.
Inherited from Base |
Hit |
Identifies a grid element located under the popup menu. |
In |
Gets whether the menu is displayed within a record header. |
In |
Gets whether the menu is displayed within a row. |
Menu | Gets or sets the control’s popup menu that will be shown. |
Point |
Gets or sets coordinates of the invoked context menu (top-left corner) relative to the parent control.
Inherited from Base |
Record |
Gets the index of a record where the popup menu will be displayed. |
Record |
Gets a data object that corresponds to a row where the popup menu will be displayed. |
Row | Gets the row where the popup menu will be displayed. |
Screen |
Gets coordinates of the invoked context menu (top-left corner) relative to the screen.
Inherited from Base |
The event data class exposes the following methods:
Method | Description |
---|---|
Show |
Invokes a custom context menu instead of the control’s menu.
Inherited from Base |
Show |
Invokes a custom context menu instead of the control’s menu.
Inherited from Base |
#Remarks
If the PropertyGridControl.OptionsMenu.EnableContextMenu option is enabled (see VGridOptionsMenu.EnableContextMenu), the property grid displays a context menu with a right-click on a property.
The menu contains the predefined Reset command that sets the property to its default value. The PopupMenuShowing event allows you to populate the menu with custom commands or invoke a custom menu instead.
DXMenuItem createDataBindingItem;
protected DXMenuItem CreateDataBindingItem {
get {
if (createDataBindingItem == null) {
DXMenuItem item = new DXMenuItem("Create Data Binding...");
item.Click += (s, ee) => MessageBox.Show("'Create Data Binding...' is clicked.");
createDataBindingItem = item;
}
return createDataBindingItem;
}
}
private void Grid_PopupMenuShowing(object sender, Events.PopupMenuShowingEventArgs e) {
if(e.Row.Properties.FieldName == "Appearance.BackColor")
e.Menu.Items.Add(CreateDataBindingItem);
}
Note
Items added using this event are also shown when the menu is invoked with a click on a brick button against a property (see PGrid
Refer to the following help topic for more information: Context Menu.
#Example
This example shows how to add a command that toggles the Enabled property to a context menu.
using DevExpress.Utils.Menu;
using DevExpress.XtraVerticalGrid;
using DevExpress.XtraVerticalGrid.Rows;
propertyGridControl1.PopupMenuShowing += propertyGridControl1_PopupMenuShowing;
private void propertyGridControl1_PopupMenuShowing(object sender, DevExpress.XtraVerticalGrid.Events.PopupMenuShowingEventArgs e) {
PropertyGridControl pg = sender as PropertyGridControl;
VGridHitInfo hi = pg.CalcHitInfo(pg.PointToClient(Cursor.Position));
if (hi.Row == null || hi.Row.Properties.FieldName != "Enabled") return;
ToggleMenuItem.Tag = hi.Row;
e.Menu.Items.Add(ToggleMenuItem);
}
DXMenuItem toggleMenuItem;
protected DXMenuItem ToggleMenuItem {
get {
if (toggleMenuItem == null) {
DXMenuItem item = new DXMenuItem("Toggle");
item.Click += item_Click;
toggleMenuItem = item;
}
return toggleMenuItem;
}
}
void item_Click(object sender, EventArgs e) {
BaseRow row = (sender as DXMenuItem).Tag as BaseRow;
bool cellValue = (bool)row.Grid.GetCellValue(row, 0);
row.Grid.SetCellValue(row, 0, !cellValue);
}