# MainMenu

The Wisej.NET `MainMenu` control contains a form's menu structure. It consists of `MenuItem` objects representing individual menu commands or submenus. Bind the `MainMenu` to a form by assigning it to the form's `Menu` property.

For multilingual support, use the `RightToLeft` property to display menu text appropriately for languages like Arabic.

Create different `MainMenu` objects for varied menu structures. Use `CloneMenu` to create reusable copies that can be modified for new menu structures.

{% hint style="info" %}
For a full list of properties, methods and events see the [API documentation.](http://docs.wisej.com/api)
{% endhint %}

## Features

### Auto Overflow

The `AutoOverflow` property automatically displays an overflow icon when menu items exceed available space.

![MainMenu showing overflow icon](https://553579532-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MF1D11gPs_az3xaKusw%2Fuploads%2Fgit-blob-f72577a76381d1f60e6ca97b5099d17d2c1ba1c4%2Fimage.png?alt=media)

### Link Menu Items

`LinkMenuItem` objects provide URL-opening menu items.

![MainMenu with link menu items](https://553579532-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MF1D11gPs_az3xaKusw%2Fuploads%2Fgit-blob-adfe3ae1f0aa251a3b7b55390059c9336c0647ad%2Fimage.png?alt=media)

### Shortcuts

Shortcut keys enable quick access to frequent menu items and keyboard navigation for users without pointer devices.

![MainMenu items with shortcut keys](https://553579532-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MF1D11gPs_az3xaKusw%2Fuploads%2Fgit-blob-0bef1184cd30c0975c6117d27b219e389343c90d%2Fimage.png?alt=media)

## How To

### Add Items

Add menu items in the designer by:

1. Drag `MainMenu` from Toolbox to Form
2. Expand `MenuItems` property to add members

For programmatic menu item addition:

{% tabs %}
{% tab title="C#" %}

```csharp
public void CreateMenu()
{
   // Create an empty MainMenu.
   MainMenu mainMenu1 = new MainMenu();

   MenuItem menuItem1 = new MenuItem();
   MenuItem menuItem2 = new MenuItem();

   menuItem1.Text = "File";
   menuItem2.Text = "Edit";
   // Add two MenuItem objects to the MainMenu.
   mainMenu1.MenuItems.Add(menuItem1);
   mainMenu1.MenuItems.Add(menuItem2);
   
   // Bind the MainMenu to Form1.
   this.Menu = mainMenu1;   
}
```

{% endtab %}
{% endtabs %}

## Advanced

### JavaScript Widget

| Item             | Description                                                                                                         |
| ---------------- | ------------------------------------------------------------------------------------------------------------------- |
| Class name       | "wisej.web.menu.MainMenu"                                                                                           |
| Theme appearance | "mainmenu", inherits from "menubar", see [Themes](https://docs.wisej.com/theme-builder/theme-elements/elements)     |
| Source code      | [https://github.com/iceteagroup/wisej-js](https://github.com/iceteagroup/wisej-js/blob/master/wisej.web.TextBox.js) |
