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

Add ContextMenu to RadPageViewPage tabs

Updated over 6 months ago

This help article will demonstrate you how to add custom RadContextMenu to RadPageViewPages' tabs, as shown in the following image.

Figure 1: Context menu

WinForms RadPageView Context menu

To create your custom RadContextMenu, add its' RadMenuItems, set their properties and add them to the RadContextMenu.Items collection:

C#
private RadContextMenu contextMenu;

public MyForm()
{
    InitializeComponent();
    
    ...
    
    contextMenu = new RadContextMenu();
    CreateContextMenu();
}

private void CreateContextMenu()
{
    RadMenuItem addNewTabMenuItem = new RadMenuItem();
    addNewTabMenuItem.Text = "Add New Tab";
    addNewTabMenuItem.Click += new EventHandler(addNewTabMenuItem_Click);
    contextMenu.Items.Add(addNewTabMenuItem);
    RadMenuSeparatorItem separator = new RadMenuSeparatorItem();
    contextMenu.Items.Add(separator);
    RadMenuItem closeTabMenuItem = new RadMenuItem();
    closeTabMenuItem.Text = "Close Tab";
    closeTabMenuItem.Click += new EventHandler(closeTabMenuItem_Click);
    contextMenu.Items.Add(closeTabMenuItem);
    RadMenuItem closeAllButThisMenuItem = new RadMenuItem();
    closeAllButThisMenuItem.Text = "Close All But This";
    closeAllButThisMenuItem.Click += new EventHandler(closeAllButThisMenuItem_Click);
    contextMenu.Items.Add(closeAllButThisMenuItem);
    RadMenuItem closeAllTabsMenuItem = new RadMenuItem();
    closeAllTabsMenuItem.Text = "Close All Tabs";
    closeAllTabsMenuItem.Click += new EventHandler(closeAllTabsMenuItem_Click);
    contextMenu.Items.Add(closeAllTabsMenuItem);
}

In the following code snippet you can observe, how to add the most common items functionalities:

C#
void addNewTabMenuItem_Click(object sender, EventArgs e)
{
    RadPageViewPage newPage = new RadPageViewPage();
    newPage.Text = "My new tab text";
    radPageView1.Pages.Add(newPage);
}
void closeTabMenuItem_Click(object sender, EventArgs e)
{
    radPageView1.Pages.Remove(radPageView1.SelectedPage);
}
void closeAllButThisMenuItem_Click(object sender, EventArgs e)
{
    for (int i = radPageView1.Pages.Count - 1; i >= 0; i--)
    {
        if (radPageView1.Pages[i] != radPageView1.SelectedPage)
        {
            radPageView1.Pages.RemoveAt(i);
        }
    }
}
void closeAllTabsMenuItem_Click(object sender, EventArgs e)
{
    radPageView1.Pages.Clear();
}

After the context menu is created it have to be associated with RadPageViewPages tabs. This can be done by subscribing to the RadPageView instance' MouseClick event:

C#
void radPageView1_MouseClick(object sender, MouseEventArgs e)
{
    RadPageViewItem hitItem = this.radPageView1.ViewElement.ItemFromPoint(e.Location);
    if (e.Button == MouseButtons.Right && hitItem != null)
    {
        contextMenu.Show(this.radPageView1.PointToScreen(e.Location));
    }
}

See Also

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