Menu Class
Collapse the table of content
Expand the table of content

Menu Class


Represents the base functionality for all menus. Although ToolStripDropDown and ToolStripDropDownMenu replace and add functionality to the Menu control of previous versions, Menu is retained for both backward compatibility and future use if you choose.

Namespace:   System.Windows.Forms
Assembly:  System.Windows.Forms (in System.Windows.Forms.dll)


public abstract class Menu : Component


Initializes a new instance of the Menu class.


Gets a value indicating whether the component can raise an event.(Inherited from Component.)


Gets the IContainer that contains the Component.(Inherited from Component.)


Gets a value that indicates whether the Component is currently in design mode.(Inherited from Component.)


Gets the list of event handlers that are attached to this Component.(Inherited from Component.)


Gets a value representing the window handle for the menu.


Gets a value indicating whether this menu contains any menu items. This property is read-only.


Gets a value indicating the MenuItem that is used to display a list of multiple document interface (MDI) child forms.


Gets a value indicating the collection of MenuItem objects associated with the menu.


Gets or sets the name of the Menu.


Gets or sets the ISite of the Component.(Inherited from Component.)


Gets or sets user-defined data associated with the control.


Copies the Menu that is passed as a parameter to the current Menu.


Creates a new handle to the Menu.


Creates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object.(Inherited from MarshalByRefObject.)


Releases all resources used by the Component.(Inherited from Component.)


Disposes of the resources, other than memory, used by the Menu.(Overrides Component.Dispose(Boolean).)


Determines whether the specified object is equal to the current object.(Inherited from Object.)


Releases unmanaged resources and performs other cleanup operations before the Component is reclaimed by garbage collection.(Inherited from Component.)

System_CAPS_pubmethodFindMenuItem(Int32, IntPtr)

Gets the MenuItem that contains the value specified.


Returns the position at which a menu item should be inserted into the menu.


Gets the ContextMenu that contains this menu.


Serves as the default hash function. (Inherited from Object.)


Retrieves the current lifetime service object that controls the lifetime policy for this instance.(Inherited from MarshalByRefObject.)


Gets the MainMenu that contains this menu.


Returns an object that represents a service provided by the Component or by its Container.(Inherited from Component.)


Gets the Type of the current instance.(Inherited from Object.)


Obtains a lifetime service object to control the lifetime policy for this instance.(Inherited from MarshalByRefObject.)


Creates a shallow copy of the current Object.(Inherited from Object.)


Creates a shallow copy of the current MarshalByRefObject object.(Inherited from MarshalByRefObject.)


Merges the MenuItem objects of one menu with the current menu.

System_CAPS_protmethodProcessCmdKey(Message, Keys)

Processes a command key.


Returns a String that represents the Menu control.(Overrides Component.ToString().)


Specifies that the FindMenuItem method should search for a handle.


Specifies that the FindMenuItem method should search for a shortcut.


Occurs when the component is disposed by a call to the Dispose method. (Inherited from Component.)

This class is the base class for the MainMenu, MenuItem, and ContextMenu classes. You cannot create an instance of this class. The menus for an application consist of MenuItem objects. These can contain other MenuItem objects, representing submenu items. The MenuItem objects can be stored in a MainMenu for display as an entire menu structure for a form or a ContextMenu that is used to display shortcut menus. This class provides functionality that is common for all the menu classes.

Unlike many base classes, the Menu class uses its derived classes to define many of its properties. If you are using your menu in a multiple-document interface (MDI) application, you can use the MdiListItem property to specify a MenuItem that displays a list of open MDI child forms in your application. The MenuItems property contains a list of MenuItem objects stored in the menu class. For a MainMenu or ContextMenu, this property contains all the MenuItem objects that are displayed. For a MenuItem, the MenuItems property represents the submenu items associated with it.

In addition to the properties that are provided for all the derived menu classes, the Menu class also provides methods, such as CloneMenu and MergeMenu, that enable you to create new menus from existing menus, and also merge two menu structures together.

The Menu class also defines the nested class Menu.MenuItemCollection. This class defines the collection of MenuItem objects used by the MenuItems property. You can use the methods of the Menu.MenuItemCollection class to add and remove menu items from a MainMenu, ContextMenu, or MenuItem.

The following code example uses the derived class, MenuItem, to create a menu structure for a form. The example code adds a MenuItem to represent the top-level menu item, adds a submenu item to it for selecting a font size, and then adds two submenu items to that menu item that represent large and small font choices in an application. The example requires that there is a MainMenu object named mainMenu1 and four MenuItem objects named menuItem1, menuItem2, menuItem3, and menuItem4.

public void CreateMyMenu()
    // Set the caption for the top-level menu item.
    menuItem1.Text = "Edit";
    // Set the caption for the first submenu.
    menuItem2.Text = "Font Size";
    // Set the caption for menuItem2's first submenu.
    menuItem3.Text = "Small";
    // Set the checked property to true since this is the default value.
    menuItem3.Checked = true;
    // Define a shortcut key combination for the menu item.
    menuItem3.Shortcut = Shortcut.CtrlS;
    // Set the caption of the second sub menu item of menuItem2.
    menuItem4.Text = "Large";
    // Define a shortcut key combination for the menu item.
    menuItem4.Shortcut = Shortcut.CtrlL;
    // Set the index of the menu item so it is placed below the first submenu item.
    menuItem4.Index = 1;
    // Add menuItem3 and menuItem4 to menuItem2's list of menu items.
    // Add menuItem2 to menuItem1's list of menu items.
    // Add menuItem1 to the MainMenu for displaying.

.NET Framework
Available since 1.1

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Return to top
© 2015 Microsoft