扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:蔡世友 来源:yesky 2007年11月14日
关键字:
下面列出其中部份关键的代码及注释:
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领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者