VGridControlBase.PopupMenuShowing Event
Allows you to customize built-in context menus or invoke custom menus.
Namespace: DevExpress.XtraVerticalGrid
Assembly: DevExpress.XtraVerticalGrid.v24.2.dll
Declaration
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 BasePopupMenuShowingEventArgs. |
HitInfoType | Identifies a grid element located under the popup menu. |
InRecordHeader | Gets whether the menu is displayed within a record header. |
InRow | 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 BasePopupMenuShowingEventArgs. |
RecordIndex | Gets the index of a record where the popup menu will be displayed. |
RecordObject | 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. |
ScreenPoint | Gets coordinates of the invoked context menu (top-left corner) relative to the screen. Inherited from BasePopupMenuShowingEventArgs. |
The event data class exposes the following methods:
Method | Description |
---|---|
ShowCustomMenu(IDXDropDownControlEx) | Invokes a custom context menu instead of the control’s menu. Inherited from BasePopupMenuShowingEventArgs. |
ShowCustomMenu(ContextMenuStrip) | Invokes a custom context menu instead of the control’s menu. Inherited from BasePopupMenuShowingEventArgs. |
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 PGridOptionsView.ShowRowBrick).
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);
}