科技行者

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

知识库

知识库 安全导航

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

Windows Forms菜单设计全攻略

  • 扫一扫
    分享文章到微信

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

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

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

关键字:

  • 评论
  • 分享微博
  • 分享邮件
4.2 添加子菜单

  在.Net中,菜单项对象模型其实是一个树状的。一个菜单可以通过在其MenuItems集合中添加菜单项,使其拥有下级子菜单;子菜单同样还可以通过相同的方法添加更下一级子菜单。

  一个菜单项对象的MenItems将返回一个Menu.MenuItemCollection集合,通过这个集合可以非常方便的管理其中的元素,例如:要添加一个子菜单只需要使用集合的Add()或者AddRange()方法,删除一个项只需要使用Remove()或者是RemoveAt()即可。

  下面的代码将为窗体添加一个主菜单,并在主菜单的第一项添加子菜单:

MainMenu Menu1=new MainMenu(new MenuItem[]{new MenuItem(“File”),new MenuItem(“Edit”),new MenuItem(“Tools”)});

this.Menu=Menu1;

MenuItem subMenu1=new MenuItem(“New”);

MenuItem subMenu2=new MenuItem(“Open”);

MenuItem subMenu3=new MenuItem(“Save”);

this.Menu.MenuItems[0].MenuItems.Add(subMenu1);

this.Menu.MenuItems[0].MenuItems.AddRange(new MenuItems[]{subMenu2,subMenu3});//使用AddRange()方法添加集合元素

  其中this.Menu.MenuItem[0]表示主菜单项1,而this.Menu.MenuItem[0].MenuItems表示主菜单项1下面的子菜单。

  4.3 添加弹出式菜单

  在.Net中,System.Windows.Forms.Control类是除菜单外的所有窗体控件及可视化元素的基类,在该类中有一个ContextMenu类型的属性ContextMenu,通过设置该属性可以为控件或窗体添加弹出式菜单。方法非常简单,你只需要创建一个ContextMenu对象,并把该对象赋给窗体或控件的ContextMenu属性即可。

  前面我们介绍了ContextMenu类有两个构造函数,使用两个构造函数,与MainMenu类似,我们可以通过下面两种方法为控件或窗体添加弹出式菜单。

  第一种方法,使用ContextMenu()产生一个不含任何菜单项的ContextMenu(弹出菜单)对象,然后通过该对象的MenuItems属性管理菜单项,如下面的语句为窗体及按钮添加同样的弹出菜单:

ContextMenu Menu1=new ContextMenu();

Menu1.MenuItems.Add(new MenuItem(“弹出菜单一"));

Menu1.MenuItems.Add(new MenuItem(“弹出菜单二"));

this.ContextMenu=Menu1;

button1.ContextMenu=Menu1;

  第二种方法是使用ContextMenu(MenuItem[] menus)构造函数直接生成具有一系列菜单项的弹出式菜单。如下面的例子:

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

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

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

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

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

  在使用过程中,你还可以通过ContextMenu对象的RightToLeft设置菜单的排列方式,通过SourceControl查看所显示弹出菜单所对应的控件等,还可以通过直接使用对象的Show()方法强制显示弹出菜单等。

  以主菜单(MainMenu)对象相似,要访问一个弹出菜单的具体菜项,你可以直接通过Menu.MenuItemCollection集合进行。如下面的语句:

Menu1.MenuItems[0].Text="Test";

 或

this.ContextMenu.MenuItems[0].Text="Test";

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

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

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