C#窗体控件更新(八)

简介:
23、菜单控件 
Windows 的菜单系统是图形用户界面( GUI)的重要组成之一,在 VisualC#中使用 MainMenu 控件可以很
方便地实现 Windows的菜单,MainMenu控件在工具箱中的图标为 。 
1.菜单的结构 
 10-9和图10-10 是典型的菜单结构。其中有文字的单个命令称菜单项,顶层菜单项是横着排列的,单击
某个菜单项后弹出的称为菜单或子菜单,它们均包含若干个菜单项,菜单项其实是  MenuItem 类的一个对
象。菜单项有的是变灰显示的,表示该菜单项当前是被禁止使用的。有的菜单项的提示文字中有带下划线
的字母,该字母称为热键(或访问键),若是顶层菜单,可通过按 “ALT+热键”打开该菜单,若是某个子
菜单中的一个选项,则在打开子菜单后直接按热键就会执行相应的菜单命令。有的菜单项后面有一个按键
或组合键,称快捷键,在不打开菜单的情况下按快捷键,将执行相应的命令。在图  10-9 中,【保存文件】
菜单项是加粗显示的,该菜单项称为默认项。图 10-9的【另存为】和【退出】之间有一个灰色的线条,该
线条称为分隔线或分隔符。在图  10-10 中菜单项【白色背景】前面有一个“√”号,称为选中标记,菜单

项加上选中标记表示该菜单项代表的功能当前正在起作用。 

2.菜单项的常用属性 
1)Text 属性:用来获取或设置一个值,通过该值指示菜单项标题。当使用 Text 属性为菜单项指定标题
时,还可以在字符前加一个 “&”号来指定热键(访问键,即加下划线的字母)。例如,若要将“File”中
“F”指定为访问键,应将菜单项的标题指定为“&File” 。 
2)Checked属性:用来获取或设置一个值,通过该值指示选中标记是否出现在菜单项文本的旁边。如果
要放置选中标记在菜单项文本的旁边,属性值为 true,否则属性值为false。默认值为false。 
3)DefaultItem 属性:用来获取或设置一个值,通过该值指示菜单项是否为默认菜单项。值为 true 时,
是默认菜单项,值为  false时,不是默认菜单项。菜单的默认菜单项以粗体的形式显示。当用户双击包含默
认项的子菜单后,默认项被选定,然后子菜单关闭。 
4)Enabled属性:用来获取或设置一个值,通过该值指示菜单项是否可用。值为true时表示可用,值为
false表示当前禁止使用。 
5)RadioCheck 属性:用来获取或设置一个值,通过该值指示选中的菜单项的左边是显示单选按钮还是
选中标记。值为 true时将显示单选按钮标记,值为false时显示选中标记。 
6)Shortcut属性:用来获取或设置一个值,该值指示与菜单项相关联的快捷键。 
7)ShowShortcut 属性:用来获取或设置一个值,该值指示与菜单项关联的快捷键是否在菜单项标题的
旁边显示。如果快捷组合键在菜单项标题的旁边显示,该属性值为  true,如果不显示快捷键,该属性值为
false。默认值为 true。 
8)MdiList属性:用来获取或设置一个值,通过该值指示是否用在关联窗体内显示的多文档界面(MDI)
子窗口列表来填充菜单项。若要在该菜单项中显示 MDI子窗口列表,则设置该属性值为true,否则设置该
属性的值为 false。默认值为false。 
3.菜单项的常用事件 
菜单项的常用事件主要有 Click事件,该事件在用户单击菜单项时发生。 
24、多窗体程序设计  
Windows应用程序很少只由一个窗体组成, 一
般情况下一个应用程序均拥有很多个窗体。 
C#项目刚建立时只有一个名为 Form1的窗体,
要建立多窗体应用程序应首先为项目添加窗
体,添加窗体的方法如下。 
1) 单击工具栏上的按钮 或执行【项
目】 →【添加Windows窗体】命令,
将会出现如图  10-17 所示的【添加新

项】对话框。 
2) 在该对话框的【模板】下面的列表框中       选中【Windows 窗体】图标,在【名称】文本框中输
入窗体名,然后单击【打开】按钮,即为应用程序添加了一个窗体。 
25、MDI 应用程序设计 
1. MDI应用程序的概念 
在前面的章节中,所创建的都是单文档界面( SDI)应用程序。这样的程序(如记事本和画图程序)仅支
持一次打开一个窗口或文档。如果需要编辑多个文档,必须创建 SDI应用程序的多个实例。而使用多文档
界面( MDI)程序(如Word和AdobePhotoshop)时,用户可以同时编辑多个文档。MDI程序中的应用程
序窗口称为父窗口,应用程序内部的窗口称为子窗口。虽
 MDI应用程序可以具有多个子窗口, 但是每个子窗口却
只能有一个父窗口。此外,处于活动状态的子窗口最大数
目是  1。子窗口本身不能再成为父窗口,而且不能移动到
它们的父窗口区域之外。除此以外,子窗口的行为与任何
其他窗口一样(如可以关闭、最小化和调整大小等)。一个
子窗口在功能上可能与父窗口的其他子窗口不同,例如,
一个子窗口可能用于编辑图像,另一个子窗口可能用于编
辑文本,第  3 个子窗口可以使用图形来显示数据,但是所
有的窗口都属于相同的 MDI父窗口。图 10-19 是一个典型
 MDI应用程序。外面的窗口是应用程序窗口,里面的两
个小窗口是  MDI子窗口。 
2.与  MDI应用程序设计有关的属性、方法和事件 
常用的 MDI父窗体属性如下。 
1)ActiveMdiChild属性:该属性用来表示当前活动的MDI子窗口,如果当前没有子窗口,则返回null。 
2)IsMdiContainer属性:该属性用来获取或设置一个值,该值指示窗体是否为多文档界面(MDI)子窗
体的容器,即 MDI父窗体。值为true时,表示是父窗体,值为false时,表示不是父窗体。 
3)MdiChildren属性:该属性以窗体数组形式返回MDI子窗体,每个数组元素对应一个 MDI子窗体。 
常用的 MDI子窗体的属性有: 
1)IsMdiChild属性:该属性用来获取一个值,该值指示该窗体是否为多文档界面(MDI)的子窗体。值
 true时,表示是子窗体,值为false时,表示不是子窗体。 
2)MdiParent属性:该属性用来指定该子窗体的MDI父窗体。与MDI应用程序设计有关的方法中,一
般只使用父窗体的 LayoutMdi方法,该方法的调用格式如下: 
MDI父窗体名 .LayoutMdi(Value); 
该方法用来在 MDI父窗体中排列MDI子窗体,以便导航和操作MDI子窗体。参数Value决定排列方式,
取值有: MdiLayout.ArrangeIcons(所有 MDI 子窗体以图标的形式排列在 MDI 父窗体的工作区内)、
MdiLayout.TileHorizontal (所有 MDI子窗口均水平平铺在MDI父窗体的工作区内)、 MdiLayout.TileVertical
(所有  MDI 子窗口均垂直平铺在 MDI 父窗体的工作区内)和 MdiLayout.Cascade(所有 MDI 子窗口均层
叠在  MDI 父窗体的工作区内)。常用的 MDI 父窗体的事件是 MdiChildActivate,当激活或关闭一个 MDI
子窗体时将发生该事件。 
3.菜单合并 
父窗体和子窗体可以使用不同的菜单,这些菜单会在选择子窗体的时候合并。如果需要指定菜单的合并方
式,程序员可以设置每个菜单项的 MergeOrder属性和MergeType属性。 

1)MergeOrder属性:用来确定当两个菜单合并时菜单项出现的顺序,具有较低 
MergeOrder的菜单项会首先出现。 
2)MergeType属性:当合并的两个菜单的某些菜单项的MergeOrder属性值相等时, 
使用该属性可以控制这些菜单项的显示方式。其取值及含义如表 10-4所示。 








本文转自 吴雨声 51CTO博客,原文链接:http://blog.51cto.com/liangxiao/719403,如需转载请自行联系原作者
目录
相关文章
|
30天前
|
Java 数据库 C#
C#winforms实现windows窗体人脸识别
C#winforms实现windows窗体人脸识别
29 0
|
1月前
|
C# 数据库 开发者
44.c#:combobox控件
44.c#:combobox控件
14 1
|
1月前
|
C# 数据库
40.c#:TreeView 控件
40.c#:TreeView 控件
14 1
|
1月前
|
C# Windows
49.c#:StatusStrip 控件
49.c#:StatusStrip 控件
21 1
49.c#:StatusStrip 控件
|
1月前
|
C# 开发者 Windows
48.c#:toolstrip控件
48.c#:toolstrip控件
15 1
|
1月前
|
C# Windows
47.c#:menustrip控件
47.c#:menustrip控件
13 1
|
1月前
|
存储 缓存 C#
46.c#:datagridview控件
46.c#:datagridview控件
18 1
|
1月前
|
C#
45.c#:listview控件
45.c#:listview控件
10 1
|
1月前
|
C# 数据库 虚拟化
43.c#:listbox控件
43.c#:listbox控件
15 1
|
1月前
|
数据处理 C# UED
42.c#:progressbar控件
42.c#:progressbar控件
15 1