科技行者

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

知识库

知识库 安全导航

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

Windows Forms菜单设计全攻略

  • 扫一扫
    分享文章到微信

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

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

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

关键字:

  • 评论
  • 分享微博
  • 分享邮件
六、综合实例

  最后,我们使用Visual Studio .Net开发了一个涉及到菜单操作各方面的实例程序,该程序演示了如何通过C#代码在Windows Forms窗体中添加主菜单、如何为窗体添加弹出式菜单、为菜单项添加事件响应方法及管理各菜单项并存取其属性值等。

  下面列出其中部份关键的代码及注释:

private void InitializeComponent()//自定义窗体类初始化函数,Visual Studio ..Net自动产生

{

//这里只列出了部份代码

this.button4.Text = "删除弹出菜单";

this.button4.Click += new System.EventHandler(this.button4_Click);

this.button1.Text = "添加主菜单";

this.button1.Click += new System.EventHandler(this.button1_Click);

this.button2.Text = "添加弹出菜单";

this.button2.Click += new System.EventHandler(this.button2_Click);

this.button3.Click += new System.EventHandler(this.button3_Click);

}

private void button1_Click(object sender, System.EventArgs e)////当用户点击按钮button1(添加主菜单)时执行该方法

{

MenuItem menuItem1=new MenuItem();

MenuItem menuItem2=new MenuItem();

MenuItem menuItem3=new MenuItem();

MenuItem menuItem4=new MenuItem();

MainMenu mainMenu1=new MainMenu();

// 设置菜单项的显示文本.

menuItem1.Text = "Edit";

menuItem2.Text = "Font Size";

menuItem3.Text = "Small";

// 设置菜单项的Checked属性为true

menuItem3.Checked = true;

// 为菜单定义一个快捷访问键.

menuItem3.Shortcut = Shortcut.CtrlS;

// 设置菜单项文本

menuItem4.Text = "Large";

// 为菜单定义一个快捷访问键.

menuItem4.Shortcut = Shortcut.CtrlL;

// Set the index of the menu item so it is placed below the first submenu item.

menuItem4.Index = 1;

// 把菜单menuItem3及menuItem3加到menuItme2的子菜单中.

menuItem2.MenuItems.Add(menuItem3);

menuItem2.MenuItems.Add(menuItem4);

// 把菜单menuItem2加为菜单一的子菜单

menuItem1.MenuItems.Add(menuItem2);

// 为窗体添加主菜单

mainMenu1.MenuItems.Add(new MenuItem("File"));

mainMenu1.MenuItems.Add(menuItem1);

mainMenu1.MenuItems.Add(new MenuItem("View"));

mainMenu1.MenuItems.Add(new MenuItem("Tools"));

mainMenu1.MenuItems.Add(new MenuItem("Windows"));

this.Menu=mainMenu1;

file://为部份菜单项添加Click事件响应方法

this.Menu.MenuItems[0].Click+=new System.EventHandler(this.Test);

menuItem3.Click+=new System.EventHandler(this.Test);

this.Menu.MenuItems[2].Click+=new System.EventHandler(this.Test);

}

private void button2_Click(object sender, System.EventArgs e)//当用户点击按钮button2(添加弹出菜单)时执行该方法

{

file://为当前窗体添加弹出式菜单

this.ContextMenu=new ContextMenu(new MenuItem[]{new MenuItem("PopMenu1"),new MenuItem("PopMenu2"),new MenuItem("PopMenu3"),new MenuItem("PopMenu4")});

file://设置弹出菜单第一项的Click事件响应方法为Test()

this.ContextMenu.MenuItems[0].Click+=new System.EventHandler(this.Test);

}

private void button3_Click(object sender, System.EventArgs e)//当用户点击按钮button3(删除主菜单)时执行该方法

{

try

{

MenuItem temp=new MenuItem();

file://把窗体主菜单的最后一项赋给temp对象,注意对象是引用类型

temp=this.Menu.MenuItems[this.Menu.MenuItems.Count-1];

file://显示删除的提示信息

MessageBox.Show("将要删除了菜单:"+temp.Text,"提示信息!");

file://删除主菜单

this.Menu.MenuItems.Remove(temp);

}

catch

{

MessageBox.Show("操作无效,可能是已经没有菜单供您删除!","提示信息");

}

}

private void button4_Click(object sender, System.EventArgs e)//当用户点击按钮button4(删除弹出菜单)时执行该方法

{

try

{

MenuItem temp=new MenuItem();

file://取得当前窗体弹出菜单的最后一项的引用

temp=this.ContextMenu.MenuItems[this.ContextMenu.MenuItems.Count-1];

file://显示提示信息

MessageBox.Show("将要删除了菜单:"+temp.Text,"提示信息!");

// 删除最弹出菜单的最后一项

this.ContextMenu.MenuItems.Remove(temp);

}

catch

{

MessageBox.Show("操作无效,可能是已经没有菜单供您删除!","提示信息");

}

}

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

{

file://当执行时弹出提示信息显示框,注意此句中对sender对象的强制类型转换

MessageBox.Show("你通过菜单:"+((MenuItem)sender).Text+"执行本程序!","提示信息");

}

  执行该程序将为显示一个没有任何菜单的窗体,你可以通过按钮为窗体添加主菜单及弹出式菜单,还可以通过按钮逐个删除菜单项,点击部份菜单项还会看到其Click事件响应方法的运行的提示信息等。如下图所示:

  总结:

  通过学习我们知道,.Net为我们提供了一系列关于菜单程序设计的类,通过这些类你可以构建基本上所有的菜单应用程序。

  在.Net中,主菜单及弹出式菜单分别是由MainMenu及ContextMenu类定义;所有的菜单都是由菜单项(MenuItem类)构成,也就是说不管是哪一种类型的菜单,其基本的元素都是MenuItem对象。

  除了部分类(如集合类)以外,在Windows Forms中,大部分菜单相关的类都是由Menu类继承而来,在Menu中提供了一个MenuItems的菜单项目集合,通过其可以达到非常方便的管理一个菜单系列中的菜单项(如添加、删除等),还可以构建一个菜单项的下级子菜单等。

  与.Net中的其它所有对象一样,要控制菜单执行相应的程序,需要为菜单对象添加事件的响应方法。

  最后,大家可以看到,在C# Windows Forms程序中,菜单的使用是非常灵活的,而且结构也是很清晰的。灵活掌握菜单各种类的关系及使用方法,将会使你在Windows Forms中编写菜单程序中得心应手。

查看本文来源

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

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

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