Introduction to Windows Forms

Adding a Menu

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.

Figure 3.1.3
A simple resizable application with a menu.

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.

Figure 3.1.4
Menu shortcuts in action.

Note how the Open menu is appended with the shortcut key press combination Ctrl+O by the MenuItem.ShowShortcut property setting.

You might also like...

Comments

Contribute

Why not write for us? Or you could submit an event or a user group in your area. Alternatively just tell us what you think!

Our tools

We've got automatic conversion tools to convert C# to VB.NET, VB.NET to C#. Also you can compress javascript and compress css and generate sql connection strings.

“Better train people and risk they leave – than do nothing and risk they stay.” - Anonymous