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