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

The Menu type exposes the following members.

Protected methodMenuInitializes a new instance of the Menu class.

Protected propertyCanRaiseEventsGets a value indicating whether the component can raise an event. (Inherited from Component.)
Public propertyContainerGets the IContainer that contains the Component. (Inherited from Component.)
Protected propertyDesignModeGets a value that indicates whether the Component is currently in design mode. (Inherited from Component.)
Protected propertyEventsGets the list of event handlers that are attached to this Component. (Inherited from Component.)
Public propertyHandleGets a value representing the window handle for the menu.
Public propertyIsParentGets a value indicating whether this menu contains any menu items. This property is read-only.
Public propertyMdiListItemGets a value indicating the MenuItem that is used to display a list of multiple document interface (MDI) child forms.
Public propertyMenuItemsGets a value indicating the collection of MenuItem objects associated with the menu.
Public propertyNameGets or sets the name of the Menu.
Public propertySiteGets or sets the ISite of the Component. (Inherited from Component.)
Public propertyTagGets or sets user-defined data associated with the control.

Protected methodCloneMenuCopies the Menu that is passed as a parameter to the current Menu.
Protected methodCreateMenuHandleCreates a new handle to the Menu.
Public methodCreateObjRefCreates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object. (Inherited from MarshalByRefObject.)
Public methodDispose()Releases all resources used by the Component. (Inherited from Component.)
Protected methodDispose(Boolean)Disposes of the resources, other than memory, used by the Menu. (Overrides Component.Dispose(Boolean).)
Public methodEquals(Object)Determines whether the specified Object is equal to the current Object. (Inherited from Object.)
Protected methodFinalizeReleases unmanaged resources and performs other cleanup operations before the Component is reclaimed by garbage collection. (Inherited from Component.)
Public methodFindMenuItemGets the MenuItem that contains the value specified.
Protected methodFindMergePositionReturns the position at which a menu item should be inserted into the menu.
Public methodGetContextMenuGets the ContextMenu that contains this menu.
Public methodGetHashCodeServes as a hash function for a particular type. (Inherited from Object.)
Public methodGetLifetimeServiceRetrieves the current lifetime service object that controls the lifetime policy for this instance. (Inherited from MarshalByRefObject.)
Public methodGetMainMenuGets the MainMenu that contains this menu.
Protected methodGetServiceReturns an object that represents a service provided by the Component or by its Container. (Inherited from Component.)
Public methodGetTypeGets the Type of the current instance. (Inherited from Object.)
Public methodInitializeLifetimeServiceObtains a lifetime service object to control the lifetime policy for this instance. (Inherited from MarshalByRefObject.)
Protected methodMemberwiseClone()Creates a shallow copy of the current Object. (Inherited from Object.)
Protected methodMemberwiseClone(Boolean)Creates a shallow copy of the current MarshalByRefObject object. (Inherited from MarshalByRefObject.)
Public methodMergeMenuMerges the MenuItem objects of one menu with the current menu.
Protected methodProcessCmdKeyProcesses a command key.
Public methodToStringReturns a String that represents the Menu control. (Overrides Component.ToString().)

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

Public fieldStatic memberFindHandleSpecifies that the FindMenuItem method should search for a handle.
Public fieldStatic memberFindShortcutSpecifies that the FindMenuItem method should search for a shortcut.

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

Supported in: 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

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