Custom context Menu
RadVirtualGrid provides a straightforward way to use custom context menus, instead of the default one. This context menu will appear every time the user right-clicks the RadVirtualGrid, regardless of the element of the control they click.

Start by creating a RadContextMenu, initializing its items, and subscribing for the events that you want to handle to achieve the desired behavior:
Create a RadContextMenu and initialize its items
RadContextMenu contextMenu = new RadContextMenu();
public VirtualGridContextMenu()
{
InitializeComponent();
RadMenuItem menuItem1 = new RadMenuItem("Item 1");
menuItem1.ForeColor = Color.Red;
menuItem1.Click += menuItem1_Click;
RadMenuItem menuItem2 = new RadMenuItem("Item 2");
menuItem2.Click += menuItem2_Click;
contextMenu.Items.Add(menuItem1);
contextMenu.Items.Add(menuItem2);
this.radVirtualGrid1.ContextMenuOpening += radVirtualGrid1_ContextMenuOpening;
}
private void menuItem1_Click(object sender, EventArgs e)
{
RadMessageBox.Show("Item1");
}
private void menuItem2_Click(object sender, EventArgs e)
{
RadMessageBox.Show("Item2");
}
Once the menu object has been initialized and populated with menu items, it is ready to be attached to the RadVirtualGrid. To do that, subscribe to the ContextMenuOpening event and set the context menu to be displayed:
Apply the custom context menu
private void radVirtualGrid1_ContextMenuOpening(object sender, VirtualGridContextMenuOpeningEventArgs e)
{
e.ContextMenu = contextMenu.DropDown;
}
Conditional Custom Context Menus
Applications may need to provide specific individual context menus depending on the element that was clicked. The following example demonstrates how to create two RadContextMenu instances, filled with two items each. Then, according to the right-clicked cell element, apply the relevant menu.
Create custom context menus
RadContextMenu contextMenu1 = new RadContextMenu();
RadContextMenu contextMenu2 = new RadContextMenu();
public void BuildCustomContextMenus()
{
RadMenuItem item1 = new RadMenuItem("Data item 1");
item1.Click += item1_Click;
RadMenuItem item2 = new RadMenuItem("Data item 2");
item2.Click += item2_Click;
contextMenu1.Items.Add(item1);
contextMenu1.Items.Add(item2);
RadMenuItem item3 = new RadMenuItem("Header item 1");
item3.Click += item3_Click;
RadMenuItem item4 = new RadMenuItem("Header item 2");
item4.Click += item4_Click;
contextMenu2.Items.Add(item3);
contextMenu2.Items.Add(item4);
}
private void item4_Click(object sender, EventArgs e)
{
RadMessageBox.Show("Header item 2");
}
private void item3_Click(object sender, EventArgs e)
{
RadMessageBox.Show("Header item 1");
}
private void item2_Click(object sender, EventArgs e)
{
RadMessageBox.Show("Data item 2");
}
private void item1_Click(object sender, EventArgs e)
{
RadMessageBox.Show("Data item 1");
}
Apply the relevant menu
private void ConditionalCustom_ContextMenuOpening(object sender, VirtualGridContextMenuOpeningEventArgs e)
{
if (e.RowIndex == -1)
{
e.ContextMenu = contextMenu2.DropDown;
}
else if (e.RowIndex >= 0)
{
e.ContextMenu = contextMenu1.DropDown;
}
}
| Data Cells Menu | Header Cells Menu |
|---|---|
![]() | ![]() |

