New to Telerik UI for WinFormsStart a free 30-day trial

Custom context Menu

Updated over 6 months ago

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.

WinForms RadVirtualGrid Custom context Menu

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

C#
        
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

C#
        
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

C#
        
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

C#
        
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 MenuHeader Cells Menu
WinForms RadVirtualGrid Data Cells MenuWinForms RadVirtualGrid Header Cells Menu

See Also

In this article
See Also
Not finding the help you need?
Contact Support