# Context Menu

## Content

Context menus provide quick access to frequently used actions. **FlexGrid** supports displaying context menus in the following scenarios:

* Non-edit mode
* Edit mode

## Display Context Menu in Non-edit Mode

To display a context menu when **FlexGrid** is not in edit mode:

1. Create a [ContextMenuStrip](/componentone/api/win/online-flexgrid/dotnet-api/C1.Win.FlexGrid.GroupPanel.10/C1.Win.FlexGrid.C1FlexGridGroupPanel.ContextMenuStrip.html) instance.
2. Add the required menu items.
3. Assign the instance to the [ContextMenuStrip](/componentone/api/win/online-flexgrid/dotnet-api/C1.Win.FlexGrid.GroupPanel.10/C1.Win.FlexGrid.C1FlexGridGroupPanel.ContextMenuStrip.html) property.

The following image shows a context menu displayed over the grid in non-edit mode.
![C1WinForms FlexGrid Display Context Menu in Non-edit Mode](https://cdn.mescius.io/document-site-files/images/2f10b028-0ae8-4c29-a102-4d67578c339b/images/context-menu-non-edit.png)
The following example demonstrates how to display a context menu in non‑edit mode.

```csharp
// Create an instance of ContextMenuStrip control
ContextMenuStrip cm = new ContextMenuStrip();
// Add menu items to the context menu
cm.Items.Add("Add Above");
cm.Items.Add("Add Below");
cm.Items.Add("Add Left");
cm.Items.Add("Add Right");
// Assign the instance to ContextMenuStrip property 
c1FlexGrid1.ContextMenuStrip = cm;                       
```

```vbnet
' Create an instance of ContextMenuStrip control
Dim cm As ContextMenuStrip = New ContextMenuStrip()
' Add menu items to the context menu
cm.Items.Add("Add Above")
cm.Items.Add("Add Below")
cm.Items.Add("Add Left")
cm.Items.Add("Add Right")
' Assign the instance to ContextMenuStrip property 
c1FlexGrid1.ContextMenuStrip = cm 
```

### Display Context Menu in Edit Mode

To display a context menu while a cell is in edit mode, handle the [C1FlexGrid.StartEdit](/componentone/api/win/online-flexgrid/dotnet-api/C1.Win.FlexGrid.10/C1.Win.FlexGrid.C1FlexGridBase.StartEdit.html) event.
In the event handler:

1. Access the active cell editor.
2. Create a [ContextMenuStrip](/componentone/api/win/online-flexgrid/dotnet-api/C1.Win.FlexGrid.GroupPanel.10/C1.Win.FlexGrid.C1FlexGridGroupPanel.ContextMenuStrip.html).
3. Add the required menu items.
4. Assign the context menu to the editor’s `ContextMenuStrip` property.

The following image shows a context menu displayed for the active cell editor.
![C1WinForms FlexGrid Display Context Menu in Edit Mode](https://cdn.mescius.io/document-site-files/images/2f10b028-0ae8-4c29-a102-4d67578c339b/images/context-menu-edit.png)
The following example demonstrates how to display a context menu in edit mode.

```csharp
private void C1FlexGrid1_StartEdit(object sender, C1.Win.C1FlexGrid.RowColEventArgs e)
{
     TextBox tb = (TextBox)c1FlexGrid1.Editor;
    // Create context menu
    ContextMenuStrip cm2 = new ContextMenuStrip();
    cm2.Items.Add("Cut");
    cm2.Items.Add("Copy");
    cm2.Items.Add("Paste");
    // Set context menu 
    tb.ContextMenuStrip = cm2;
}                      
```

```vbnet
Private Sub C1FlexGrid1_StartEdit(ByVal sender As Object, ByVal e As C1.Win.C1FlexGrid.RowColEventArgs)
    Dim tb As TextBox = CType(c1FlexGrid1.Editor, TextBox)
    ' Create context menu
    Dim cm2 As ContextMenuStrip = New ContextMenuStrip()
    cm2.Items.Add("Cut")
    cm2.Items.Add("Copy")
    cm2.Items.Add("Paste")
    ' Set context menu 
    tb.ContextMenuStrip = cm2
End Sub        
```