科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件Windows Forms菜单设计全攻略

Windows Forms菜单设计全攻略

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

怎样才能掌握Windows Forms菜单的实质,怎样才能为所欲为的进行窗体菜单程序的开发呢

作者:蔡世友 来源:yesky 2007年11月14日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
三、菜单项对象(MenuItem)

  3.1 简介

  前面介绍过,System.Windows.Forms.MenuItem类封装了对菜单项目的各种属性、响应事件及方法的定义,MenuItem对象是形成各种Windows Forms菜单的基本元素。因此,不管是那一种类型的菜单,其中都必须含有菜单项,这样对我们实际应用才有意义。

  在.Net类库中,所有类型的菜单项都是通过MenuItem类定义的,该类及其父类Menu定义了菜单项的各种成员。有了一个MenuItem对象后,就可以把它加入到任何类型的菜单中使用(如把其加入到MainMenu对象中形成主菜单、加入到ContextMenu对象中形成弹出式菜单而加入到一个MenuItem对象的MenuItems属性中形成一个下级菜单等)。

  3.2 生成MenuItem对象

  生成MenuItem (菜单项)对象,可以使用MenuItem类的构造函数。下面分别介绍的MenuItem支持五个常用构造函数:

  (1)、MenuItem():该构造函数不含任何参数,其创建一个空菜单项对象,你可以通过其属性设置菜单的外观及事件。如下面的代码:

MenuItem menuItem1 = new MenuItem();

menuItem1.Text = "&File";

  (2)、MenuItem(string text):该构造函数含有一个字符串作为参数,这样你将生成一个文本属性值为text的菜单项对象。如:

MenuItem menuItem1=new MenuItem(“File”);

  (3)、MenuItem(string text,EventHandler onClick):该构造函数将生成一个以字符串text作为文本属性的菜单项,并且为其Click事件添加一个响应方法。如:

MenuItem menuItem1 = new MenuItem("&New",new System.EventHandler(MenuItem1_Click));

  其中MenuItem1_Click()函数定义如下:

private void MenuItem1_Click(object sender, System.EventArgs e)
{
}

  (4)、MenuItem(string text,MenuItem[] items):构造函数将生成一个以字符串text文本的菜单项,同时将把第二个参数菜单项数组中的各项作为该菜单项的子菜单。如下面的代码将添加一个文本显示为Color且包含三个子菜单的菜单项:

MenuItem menu1=new MenuItem(“Red”);
MenuItem menu2=new MenuItem(“Blue”);
MenuItem menu3=new MenuItem(“Black”);
MenuItem menuItem1 = new MenuItem("&Colors",new MenuItem[]{menu1,menu2,menu3});

  (5)、MenuItem(string text,EventHandler onClick,Shortcut shortcut):该构造函数包含三个参数,其中一个文本框,一个EventHandler代表及一个快捷访问键。该构造函数将生成一个文本为Text,快捷键为shortcut的菜单项,并且为该菜单项的Click事件添加一个响应方法。如下面代码将生成一个菜单项文本显示为New,Click事件响应方法为MenuItem1_Click(),访问快捷键为Alt+N及Ctrl+L的菜单项:

MenuItem MenuItem1 = new MenuItem("&New",new System.EventHandler(MenuItem1_Click),Shortcut.CtrlL);

  3.3 使用MenuItem对象属性

  在.Net Windows Forms中,所有类型的菜单项目都是MenuItem对象。那么如何表现丰富多彩的菜单外观呢?在这里,MenuItem类为我们提供了所有这方面的属性,以供你有实际项目中应用。通过这些属性,你可以定义选择菜单、命令菜单、菜单分隔符及菜单了下级菜单等。这些属性设置一般都是非常简单的,你只要选择你的菜单项是否是属于某一类型的菜单(true or false)即可。如下面的代码使菜单项menuItem1的前面有一个“√”:

menuItem1.Checked=true;

  下面简单介绍MenuItem中比较有用的属性:

  (1)、BarBreak属性

   如果其值为True,表示当前菜单项将换到下一栏显示,并有一条分隔线。

  (2)、Break属性

   如果其值为True,表示当前菜单项将换到下一栏显示,没有分隔线。

  (3)、Checked属性

   其表示当前的菜单项是否被选中。如果一个菜单项被选取中,菜单的前面将有一个“√”。

  (4)、DefaultItem属性

  该属性如果为真表示当前菜单项是一个默认菜单,并用粗体显示。一个菜单如果是默认菜单,则当你双击该菜单项属的主菜单时,该菜单将被选中。

  (5)、Enabled属性

   用于设置当前菜单项是否可用,当Enalbed为true时,菜单项可用,否则将显示成为恢色的形式且你不可以点击。

  (6)、Index属性

   该属性其返回一个int型数据表示该菜单所在主菜单中的序号。

  (7)、IsParent属性

   该属性返回当前菜单是否包含有子菜单,如果有则返回true。

  (8)、MenuID属性

   返回当前菜单项的ID值。

  (9)、Parent属性

   该属性返回一个Menu类数据表示当前菜单的父菜单。注意:Menu类是所有菜单位类的基类。

  (10)、Shortcut属性

   该属性用于访问及设置菜单项的快捷键。

  (11)、ShowShortcut属性

   布尔类型,用于访问及设置是否要在当前菜单中显示快捷键,果为true则显示,系统默认值为true。

  (12)、Text属性

   表示菜单项的显示文本。如果在显示文本中加一个”&”字符表示其后的键为菜单项的快捷访问键,此时“&”后面的字符将显示成下划线的形式。如:“&File”表示使用Alt+F快捷访问菜单。而文本为“-”时,表示此菜单项项为一条横线,这一特性经常用于菜单显示外观设计中用到。

  (13)、Visible属性

   布尔类型,表示菜单项是否可见,如该值设为false将隐藏菜单。系统默认值为true。

  3.4 示例程序

  下面我们用Visual Studio .Net专门写了一个演示MenuItem (菜单项)对像丰富外观特性的程序,其中关键的代码及注释如下:

private void button1_Click(object sender, System.EventArgs e)

{

MenuItem menu1=new MenuItem("弹出菜单一");//生成一个菜单项

MenuItem menu2=new MenuItem("弹出菜单二");

MenuItem menu3=new MenuItem("-");//菜单分隔线

MenuItem menu4=new MenuItem("弹出菜单三");

MenuItem menu5=new MenuItem("弹出菜单四");

menu1.Checked=true;//在菜单前面打一√

menu2.BarBreak=true;//断开并分栏

menu2.Enabled=false;//此菜单项不可用,呈恢色显示

menu4.Shortcut=Shortcut.Alt1;//给菜单定义一个快捷访问键

menu4.ShowShortcut=true;//在菜单上显示快捷键

file://把前面的菜单作为菜单项添加成为当前窗体的子菜单

this.ContextMenu=new ContextMenu(new MenuItem[]{menu1,menu2,menu3,menu4,menu5});//为当前窗体添加弹出式菜单

}

  程序运行将有一个主菜单,主菜单的各项属性有所不同。通过点击“添加弹出菜单”按钮可以为窗体添加弹出菜单,此时在窗体上点右键可以查看我们所添加的弹出菜单各项效果。如下图所示:

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章