A Windows application without a menu is a rare thing. A Windows Forms application is no exception. Like the button and label you saw earlier, the menu component can be added to the Menu member of the main application, and events from the menu items can be hooked to handlers.
Menus under .NET come in two forms. MainMenu is applied to a form to provide the main user interface menu, and ContextMenu is used to respond to right mouse clicks. In both cases, the individual items within the menus are objects of type MenuItem. A menu is constructed as a hierarchy of parent and child objects. The main menu owns the individual drop-downs, which in turn own their menu items.
A typical menu creation sequence is seen in Listing 3.1.5.
Listing 3.1.5 Constructing a Menu
MainMenu menu = new MainMenu(); MenuItem filemenu = new MenuItem(); filemenu.Text = "File"; menu.MenuItems.Add(filemenu); MenuItem open = new MenuItem(); open.Text = "Open"; filemenu.MenuItems.Add(open); MenuItem save= new MenuItem(); save.Text = "Save"; filemenu.MenuItems.Add(save); MenuItem exit= new MenuItem(); exit.Text = "Exit"; filemenu.MenuItems.Add(exit); MenuItem editmenu = new MenuItem(); editmenu.Text = "Edit"; menu.MenuItems.Add(editmenu); MenuItem cut= new MenuItem(); cut.Text = "Cut"; editmenu.MenuItems.Add(cut); MenuItem copy = new MenuItem(); copy.Text = "Copy"; editmenu.MenuItems.Add(copy); MenuItem paste = new MenuItem(); paste.Text = "Paste"; editmenu.MenuItems.Add(paste); this.Menu = menu;
The indentation in Listing 3.1.5 illustrates the hierarchy of the menus.
Figure 3.1.3 shows a simple resizable application with a menu added.
Adding a Menu Shortcut
Placing an ampersand before a character in the menu text will automatically give the menu item an underscore when the Alt key is pressed. The key combination of Alt+F followed by O can be used to invoke the menu handler as if the menu were selected with the mouse.
A direct key combination might also be added to the menu item by using one of the predefined Shortcut enumerations. The File, Open menu item handler can be made to fire in response to a Ctrl+O keypress by adding the shortcut, as shown in Listing 3.1.6.
Listing 3.1.6 Adding a Shortcut to the File, Open MenuItem
MenuItem filemenu = new MenuItem(); filemenu.Text = "&File"; menu.MenuItems.Add(filemenu); MenuItem open = new MenuItem(); open.Text = "&Open"; filemenu.MenuItems.Add(open); open.Shortcut = Shortcut.CtrlO; open.ShowShortcut = true;
When you press the Alt key, the F in the File menu is underlined. You can press F to pop up the menu and press O to invoke the menu's function, as shown in Figure 3.1.4.
Note how the Open menu is appended with the shortcut key press combination Ctrl+O by the MenuItem.ShowShortcut property setting.
Comments