# Context Menus

Better ListView: Ultimate .NET ListView replacement control for WinForms (C#, VB.NET)
Download More Info

Better ListView allows settings four distinct context menu via properties:

- ContextMenuStrip

  - Global context menu, used when uses clicks on client area (or on column header/item when the specific menu is not set).

- ContextMenuStripColumns

  - Context menu for column headers.

- ContextMenuStripGroups

  - Context menu for groups.

- ContextMenuStripItems

  - Context menu for items.

Only ContextMenuStrip is available in Better ListView Express.

These are of type System.Windows.Forms.ContextMenuStrip.

Custom context menus can be displayed manually using MouseDown event and HitTest method to detect location of the cursor.

## Sample Source Code

C#

    // add column, group and item
    this.listView.BeginUpdate();

    this.listView.Columns.Add(new BetterListViewColumnHeader("some column", 256));
    this.listView.Groups.Add("some group");
    this.listView.Items.Add(new BetterListViewItem("some item", this.listView.Groups[0]));

    this.listView.ShowGroups = true;

    this.listView.EndUpdate();

    // set common context menu
    ContextMenuStrip contextMenuStripCommon = new ContextMenuStrip();

    contextMenuStripCommon.Items.Add("Common Context Menu Item 1");
    contextMenuStripCommon.Items.Add("Common Context Menu Item 2");

    this.listView.ContextMenuStrip = contextMenuStripCommon;

    // set column header context menu
    ContextMenuStrip contextMenuStripColumnHeaders = new ContextMenuStrip();

    contextMenuStripColumnHeaders.Items.Add("Column Header Context Menu Item 1");
    contextMenuStripColumnHeaders.Items.Add("Column Header Context Menu Item 2");

    this.listView.ContextMenuStripColumns = contextMenuStripColumnHeaders;

    // set item context menu
    ContextMenuStrip contextMenuStripItems = new ContextMenuStrip();

    contextMenuStripItems.Items.Add("Item Context Menu Item 1");
    contextMenuStripItems.Items.Add("Item Context Menu Item 2");

    this.listView.ContextMenuStripItems = contextMenuStripItems;

    // set group context menu
    ContextMenuStrip contextMenuStripGroups = new ContextMenuStrip();

    contextMenuStripGroups.Items.Add("Group Context Menu Item 1");
    contextMenuStripGroups.Items.Add("Group Context Menu Item 2");

    this.listView.ContextMenuStripGroups = contextMenuStripGroups;

Visual Basic

    ' add column, group and item
    ListView.BeginUpdate()

    ListView.Columns.Add (New BetterListViewColumnHeader ("some column", 256))
    ListView.Groups.Add ("some group")
    ListView.Items.Add (New BetterListViewItem ("some item", ListView.Groups (0)))

    ListView.ShowGroups = True

    ListView.EndUpdate()

    ' set common context menu
    Dim contextMenuStripCommon As New ContextMenuStrip()

    contextMenuStripCommon.Items.Add ("Common Context Menu Item 1")
    contextMenuStripCommon.Items.Add ("Common Context Menu Item 2")

    ListView.ContextMenuStrip = contextMenuStripCommon

    ' set column header context menu
    Dim contextMenuStripColumnHeaders As New ContextMenuStrip()

    contextMenuStripColumnHeaders.Items.Add ("Column Header Context Menu Item 1")
    contextMenuStripColumnHeaders.Items.Add ("Column Header Context Menu Item 2")

    ListView.ContextMenuStripColumns = contextMenuStripColumnHeaders

    ' set item context menu
    Dim contextMenuStripItems As New ContextMenuStrip()

    contextMenuStripItems.Items.Add ("Item Context Menu Item 1")
    contextMenuStripItems.Items.Add ("Item Context Menu Item 2")

    ListView.ContextMenuStripItems = contextMenuStripItems

    ' set group context menu
    Dim contextMenuStripGroups As New ContextMenuStrip()

    contextMenuStripGroups.Items.Add ("Group Context Menu Item 1")
    contextMenuStripGroups.Items.Add ("Group Context Menu Item 2")

    ListView.ContextMenuStripGroups = contextMenuStripGroups

Better ListView: Ultimate .NET ListView replacement control for WinForms (C#, VB.NET)
Download More Info