C#Windows应用程序开发之添加菜单

来源:岁月联盟 编辑:zhu 时间:2009-08-16

C#Windows应用程序开发之添加菜单的前言:通常windows应用程序都有相似的特征:控件、菜单、工具条、状态栏等等。每次我们开始作一个新的windows应用程序时都是以相同的事情开始:建立项目,添加控件和事件处理器。如果我们有一个模板,那么我们就可以节约大量的时间了。

在介绍如何建立模板的过程中,将涉及大量的微软.net framework类库的基本知识。如果你没有使用集成开发环境那么本文介绍的模板对你将非常有用,如果你使用了visual studio.net这样的集成开发环境你也可以从中了解控件的工作方式,这对你也是很有用的。

C#Windows应用程序开发之添加菜单和菜单项

要找到没有菜单的windows应用程序非常困难,菜单使访问应用程序的功能变得很简单,在大多数环境下可以最小的使用控件。菜单比控件占用更少的空间,同时使应用程序显得更有组织。

在System.Windows.Forms名称空间中,所有与菜单相关的控件都是menu类的子类。menu是一个抽象类,你不能直接实例化,menu类有三个子类:

  1. ContextMenu   
  2. MainMenu   
  3. MenuItem  

C#Windows应用程序开发之添加菜单之ContextMenu类表示快捷菜单,在控件或窗体区域点击鼠标右键时显示。快捷菜单常用于组合窗体mainmenu类的菜单项给出应用程序的上下文,这对于用户时非常有用的。

MainMenu表示传统的位于窗体顶部的菜单,你可以把它看成窗体菜单结构的容器。一个菜单是由MenuItem表示的菜单项组成的,对于应用程序而言每一个菜单项是一个命令或其它子菜单项的父菜单。form类都有一个menu属性,采用将mainmenu对象赋给menu属性的方式将mainmenu对象绑定到窗体。

C#Windows应用程序开发之添加菜单在这个模板中,我们没有使用ContextMenu类,但我们示范了如何使用MainMenu和MenuItem类。我们首先需要在窗体中添加一个菜单,给窗体添加一个MainMenu对象。

MainMenu mainMenu = new MainMenu(); 

C#Windows应用程序开发之添加菜单和菜单项现在MainMenu对象中什么都没有,下面我们给他添加一个MenuItem对象。在List1中主菜单称为fileMenuItem,它的text属性是&File,&表示他后面的字母带下划线,是该菜单的快捷键。通过使用Menu对象的MenuItemCollection的add方法为MainMenu添加一个或几个MenuItem,这个集合可以通过menu类的MenuItems属性访问。

  1. MenuItem fileMenuItem = new MenuItem();   
  2. mainMenu.MenuItems.Add(fileMenuItem);  

C#Windows应用程序开发之添加菜单和菜单项我们在fileMenuItem 菜单项中还添加了其它MenuItem,这些MenuItem是fileMenuItem的子菜单。你也可以给子菜单添加子菜单。图2显示了菜单的等级结构。

fileMenuItem 

C#Windows应用程序开发之添加菜单项的声明如下:

  1. MenuItem fileNewMenuItem;   
  2. MenuItem fileOpenMenuItem;   
  3. MenuItem fileSaveMenuItem;   
  4. MenuItem fileSaveAsMenuItem;   
  5. MenuItem fileMenuWithSubmenu;   
  6. MenuItem submenuMenuItem;   
  7. MenuItem fileExitMenuItem;  

C#Windows应用程序开发之添加菜单和菜单项之MenuItem类有几个构造函数,使用这些构造函数实例化你的 MenuItem对象,并添加一个事件处理器。

  1. // the following constructor is the same as:   
  2. // menuItem fileNewMenuItem = new MenuItem();   
  3. // fileNewMenuItem.Text = "&New";   
  4. // fileNewMenuItem.Shortcut = Shortcut.CtrlN;   
  5. // fileNewMenuItem.Click += new   
  6. // System.EventHandler(this.fileNewMenuItem_Click);   
  7. fileNewMenuItem = new MenuItem("&New",   
  8. new System.EventHandler(this.fileNewMenuItem_Click), Shortcut.CtrlN);   
  9.  
  10. fileOpenMenuItem = new MenuItem("&Open",   
  11. new System.EventHandler(this.fileOpenMenuItem_Click), Shortcut.CtrlO);   
  12.  
  13. fileSaveMenuItem = new MenuItem("&Save",   
  14. new System.EventHandler(this.fileSaveMenuItem_Click), Shortcut.CtrlS);   
  15.  
  16. fileSaveAsMenuItem = new MenuItem("Save &As",   
  17. new System.EventHandler(this.fileSaveAsMenuItem_Click));   
  18.  
  19. fileMenuWithSubmenu = new MenuItem("&With Submenu");   
  20.  
  21. submenuMenuItem = new MenuItem("Su&bmenu",   
  22. new System.EventHandler(this.submenuMenuItem_Click));   
  23.  
  24. fileExitMenuItem = new MenuItem("E&xit",   
  25. new System.EventHandler(this.fileExitMenuItem_Click));   
  26.  
  27. Event handling is discussed further in the section "Adding Event Handlers."   
  28.  
  29. As mentioned, the menu items are added to the fileMenuItem control.   
  30.  
  31. fileMenuItem.MenuItems.Add(fileNewMenuItem);   
  32. fileMenuItem.MenuItems.Add(fileOpenMenuItem);   
  33. fileMenuItem.MenuItems.Add(fileSaveMenuItem);   
  34. fileMenuItem.MenuItems.Add(fileSaveAsMenuItem);   
  35. fileMenuItem.MenuItems.Add(fileMenuWithSubmenu);   
  36. fileMenuWithSubmenu.MenuItems.Add(submenuMenuItem);   
  37. fileMenuItem.MenuItems.Add("-"); // add a separator   
  38. fileMenuItem.MenuItems.Add(fileExitMenuItem);   

注意在菜单项之间可以创建一个分隔符,方法是使用menu类的MenuItems集合的add方法。上面的例子中使用的分隔符是"-"。

C#Windows应用程序开发之添加菜单和菜单项的基本情况就向你介绍到这里,希望对你学习和了解C#Windows应用程序开发之添加菜单和菜单项有所帮助。