用C#设计Windows应用程序模板(3)

[摘要]添加菜单和菜单项要找到没有菜单的windows应用程序非常困难,菜单使访问应用程序的功能变得很简单,在大多数环境下可以最小的使用控件。菜单比控件占用更少的空间,同时使应用程序显得更有组织。在System.Windows.Forms名称空间中,所有与菜单相关的控件都是menu类的子类。menu是一个抽

添加菜单和菜单项

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

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

ContextMenu
MainMenu
MenuItem 

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

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

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

MainMenu mainMenu = new MainMenu(); 

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

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

我们在fileMenuItem 菜单项中还添加了其它MenuItem,这些MenuItem是fileMenuItem的子菜单。你也可以给子菜单添加子菜单。图2显示了菜单的等级结构。

---------图2---------

菜单项的声明如下:

MenuItem fileNewMenuItem;

MenuItem fileOpenMenuItem;

MenuItem fileSaveMenuItem;

MenuItem fileSaveAsMenuItem;

MenuItem fileMenuWithSubmenu;

MenuItem submenuMenuItem;

MenuItem fileExitMenuItem;
MenuItem类有几个构造函数,使用这些构造函数实例化你的 MenuItem对象,并添加一个事件处理器。
// the following constructor is the same as:

// menuItem fileNewMenuItem = new MenuItem();

// fileNewMenuItem.Text = "&New";

// fileNewMenuItem.Shortcut = Shortcut.CtrlN;

// fileNewMenuItem.Click += new

// System.EventHandler(this.fileNewMenuItem_Click);

fileNewMenuItem = new MenuItem("&New",

new System.EventHandler(this.fileNewMenuItem_Click), Shortcut.CtrlN);
fileOpenMenuItem = new MenuItem("&Open",

new System.EventHandler(this.fileOpenMenuItem_Click), Shortcut.CtrlO);
fileSaveMenuItem = new MenuItem("&Save",

new System.EventHandler(this.fileSaveMenuItem_Click),
Shortcut.CtrlS);

fileSaveAsMenuItem = new MenuItem("Save &As",

new System.EventHandler(this.fileSaveAsMenuItem_Click));
fileMenuWithSubmenu = new MenuItem("&With Submenu");
submenuMenuItem = new MenuItem("Su&bmenu",

new System.EventHandler(this.submenuMenuItem_Click));
fileExitMenuItem = new MenuItem("E&xit",

new System.EventHandler(this.fileExitMenuItem_Click));
Event handling is discussed further in the section "Adding Event Handlers."
As mentioned, the menu items are added to the fileMenuItem control.
fileMenuItem.MenuItems.Add(fileNewMenuItem);

fileMenuItem.MenuItems.Add(fileOpenMenuItem);

fileMenuItem.MenuItems.Add(fileSaveMenuItem);

fileMenuItem.MenuItems.Add(fileSaveAsMenuItem);

fileMenuItem.MenuItems.Add(fileMenuWithSubmenu);

fileMenuWithSubmenu.MenuItems.Add(submenuMenuItem);

fileMenuItem.MenuItems.Add("-"); // add a separator

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




免责声明:

本站系本网编辑转载,会尽可能注明出处,但不排除无法注明来源的情况,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与本网联系, 来信: liujun@soft6.com 我们将在收到邮件后第一时间删除内容!

[声明]本站文章版权归原作者所有,内容为作者个人观点,不代表本网站的观点和对其真实性负责,本站拥有对此声明的最终解释权。