100165552.htm
来自「C#高级编程(第三版),顶死你们。。 。up」· HTM 代码 · 共 76 行
HTM
76 行
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>
19.3.18 Menu控件
</title></head>
<body>
<div class="area">
<div class="col1">
<div class="lineBlue">
</div>
<!-- title -->
<div class="arcTitle">
<h1>
<a href="../16">
C#高级编程(第3版)【全文连载】
</a>
</h1>
<div style="text-align: center; font-size: 15px">
<a href="100165552.htm">
19.3.18 Menu控件
</a>
</div>
<div style="text-align: center; font-size: 15px">
<a class="url" href="../../default.htm">http://book.csdn.net/</a>
2006-10-13 14:41:00
</div>
<div style="margin: 0px auto; width: 700px; border: solid 1px #0b5f98;">
<div style="float: left; width: 16px; background-color: #0b5f98; color: White; padding: 1px;">
图书导读
</div>
<div style="float: right; width: 670px; text-align: left; line-height: 16pt; padding-left: 2px">
<!--导读-->
<h1 id="divCurrentNode" style="color: #b83507; width: 100%; text-align: left; font-size: 12px; padding-left: 2px">当前章节:<a href='100165552.htm'><font color='red'>19.3.18 Menu控件</font></a></h1>
<div id="divRelateNode" style="padding-left: 2px">
<div style='float:left;width:49%'>·<a href='100165549.htm'>19.3.15 Splitter控件</a></div><div style='float:right;width:49%'>·<a href='100165550.htm'>19.3.16 StatusBar控件</a></div><div style='float:left;width:49%'>·<a href='100165551.htm'>19.3.17 TabControl控件和TabPages控件</a></div><div style='float:right;width:49%'>·<a href='100165553.htm'>19.3.19 ToolBar控件</a></div><div style='float:left;width:49%'>·<a href='100165554.htm'>19.4 窗体</a></div><div style='float:right;width:49%'>·<a href='100165555.htm'>19.4.1 Form类</a></div></div>
</div>
</div>
</div>
<!-- main -->
<div id="main">
<div id="text"> <link href="css.css" rel="stylesheet" type="text/css" /><h3 style="MARGIN-TOP: 8.15pt; MARGIN-LEFT: 0cm; MARGIN-RIGHT: 0cm; FTEL: 8.15pt"><span lang="EN-US">19.3.18 Menu</span><span style="FONT-FAMILY: 黑体">控件</span></h3>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">实际上有</span><span lang="EN-US">3</span><span style="FONT-FAMILY: 宋体">个组件派生于</span><span lang="EN-US">Manu</span><span style="FONT-FAMILY: 宋体">类:</span><span lang="EN-US">MainMenu</span><span style="FONT-FAMILY: 宋体">、</span><span lang="EN-US">ContextMenu</span><span style="FONT-FAMILY: 宋体">和</span><span lang="EN-US">MenuItem</span><span style="FONT-FAMILY: 宋体">。</span><span lang="EN-US">Manu</span><span style="FONT-FAMILY: 宋体">是抽象类,因此不能直接使用。</span><span lang="EN-US">Menu</span><span style="FONT-FAMILY: 宋体">类定义了属性</span><span lang="EN-US">MenuItems</span><span style="FONT-FAMILY: 宋体">,它是</span><span lang="EN-US">MenuItem</span><span style="FONT-FAMILY: 宋体">的集合,这是创建嵌套菜单的方式。在引用</span><span lang="EN-US">MenuItem</span><span style="FONT-FAMILY: 宋体">时,如果在</span><span lang="EN-US">MenuItems</span><span style="FONT-FAMILY: 宋体">集合中有条目,就可以引用一个完整的菜单结构。</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">把一个基于</span><span lang="EN-US">Menu</span><span style="FONT-FAMILY: 宋体">的组件拖放到窗体上时,在设计器上它会显示在窗体底部的组件栏中。现在可以选择组件,设置各种属性。菜单在设计器上显示在窗体的顶部。这里可以定义菜单结构和菜单的导航方式。菜单设计器很容易查看菜单结构定义好之后的外观。图</span><span lang="EN-US">19-5</span><span style="FONT-FAMILY: 宋体">显示了打开</span><span lang="EN-US">ControlSample</span><span style="FONT-FAMILY: 宋体">项目后,激活菜单编辑器的情况。</span></p>
<p class="MsoNormal"><span lang="EN-US">MainMenu</span><span style="FONT-FAMILY: 宋体">用于在应用程序的窗体顶部提供一个菜单栏。它是</span><span lang="EN-US">MenuItem</span><span style="FONT-FAMILY: 宋体">对象的容器,</span><span lang="EN-US">MenuItem</span><span style="FONT-FAMILY: 宋体">对象组成了菜单系统的结构。创建菜单系统最简单的方法是在设计器中创建。给窗体添加一个新的</span><span lang="EN-US">MainMenu</span><span style="FONT-FAMILY: 宋体">组件。在激活该组件时,就会看到菜单设计器在窗体的顶部被激活。开始输入菜单文本,创建相应的</span><span lang="EN-US">MenuItem</span><span style="FONT-FAMILY: 宋体">对象。菜单可以嵌套,但不应嵌套</span><span lang="EN-US">3</span><span style="FONT-FAMILY: 宋体">级以上,否则用户就很难找到菜单项。如果在菜单文本的一个字符前面加上</span><span lang="EN-US">&</span><span style="FONT-FAMILY: 宋体">,该字符就会加上下划线,用户按下</span><span lang="EN-US">Alt</span><span style="FONT-FAMILY: 宋体">键和带下划线的字母就可以访问该菜单选项。只有菜单是可见和激活的时,这才</span><span lang="EN-US"> </span><span style="FONT-FAMILY: 宋体">有效。</span></p>
<p class="MsoNormal"><span lang="EN-US">ContextMenu</span><span style="FONT-FAMILY: 宋体">是</span><span lang="EN-US">MenuItem</span><span style="FONT-FAMILY: 宋体">的另一个容器。这个容器与</span><span lang="EN-US">MainMenu</span><span style="FONT-FAMILY: 宋体">的区别是,</span><span lang="EN-US">ContextMenu</span><span style="FONT-FAMILY: 宋体">是快捷菜单,当用户在控件或窗体上单击鼠标右键时显示。这种菜单一般包含与用户右击的控件或窗体相关的选项。每个控件有一个</span><span lang="EN-US">ContextMenu</span><span style="FONT-FAMILY: 宋体">属性,它设置为相应的</span><span lang="EN-US">ContextMenu</span><span style="FONT-FAMILY: 宋体">。</span><span lang="EN-US">ContextMenu</span><span style="FONT-FAMILY: 宋体">有一个属性</span><span lang="EN-US">SourceControl</span><span style="FONT-FAMILY: 宋体">,它返回激活菜单的控件。</span></p>
<p align="center"><span lang="EN-US"><img height="428" src="19/image005.jpg" width="558" alt="" /></span></p>
<p style="FTEL: 8.15pt" align="center"><span style="FONT-FAMILY: 宋体">图</span><span lang="EN-US"> 19-5</span></p>
<p class="MsoNormal"><span lang="EN-US">MenuItem</span><span style="FONT-FAMILY: 宋体">类定义菜单选项。它包含几个属性,定义菜单选项的显示方式。</span><span lang="EN-US">Checked</span><span style="FONT-FAMILY: 宋体">属性在菜单文本旁边显示一个复选标记。这是一个布尔值,所以可以被切换为开或关。如果</span><span lang="EN-US">RadioButton</span><span style="FONT-FAMILY: 宋体">属性设置为</span><span lang="EN-US">true</span><span style="FONT-FAMILY: 宋体">,就显示一个单选按钮</span><span lang="EN-US">(</span><span style="FONT-FAMILY: 宋体">代替复选标记</span><span lang="EN-US">)</span><span style="FONT-FAMILY: 宋体">。如果某个菜单中的菜单选项是互斥的,就可以使用</span><span lang="EN-US">RadioButton</span><span style="FONT-FAMILY: 宋体">属性,表示一次只能选择一个选项。为了定义组合快捷键,可以把</span><span lang="EN-US">Shortcut</span><span style="FONT-FAMILY: 宋体">属性设置为一个</span><span lang="EN-US">Shortcut</span><span style="FONT-FAMILY: 宋体">枚举值。</span><span lang="EN-US">Shortcut</span><span style="FONT-FAMILY: 宋体">枚举定义了赋予菜单的各种组合键。</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">在大型应用程序中,定义的菜单结构是相当大的。为了降低复杂性,可以生成几个较小的菜单结构,再把它们合并在一起。</span><span lang="EN-US">MergeOrder</span><span style="FONT-FAMILY: 宋体">属性确定合并后每个</span><span lang="EN-US">MenuItem</span><span style="FONT-FAMILY: 宋体">结构的顺序。</span><span lang="EN-US">MergeType</span><span style="FONT-FAMILY: 宋体">属性使用</span><span lang="EN-US">MergeType</span><span style="FONT-FAMILY: 宋体">枚举确定合并的执行方式。其选项有</span><span lang="EN-US">Add</span><span style="FONT-FAMILY: 宋体">,即把</span><span lang="EN-US">MenuItem</span><span style="FONT-FAMILY: 宋体">对象添加到已有的</span><span lang="EN-US">MenuItem</span><span style="FONT-FAMILY: 宋体">集合中;</span><span lang="EN-US">MergeItem</span><span style="FONT-FAMILY: 宋体">是把当前的</span><span lang="EN-US">MenuItem</span><span style="FONT-FAMILY: 宋体">合并到目标</span><span lang="EN-US">MenuItem</span><span style="FONT-FAMILY: 宋体">对象中;</span><span lang="EN-US">Remove</span><span style="FONT-FAMILY: 宋体">不允许合并</span><span lang="EN-US">MenuItem</span><span style="FONT-FAMILY: 宋体">对象;</span><span lang="EN-US">Replace</span><span style="FONT-FAMILY: 宋体">在目标</span><span lang="EN-US">MenuItem</span><span style="FONT-FAMILY: 宋体">对象的相同位置替换已有的</span><span lang="EN-US">MenuItem</span><span style="FONT-FAMILY: 宋体">对象。要进行合并,应调用</span><span lang="EN-US">MergeMenu</span><span style="FONT-FAMILY: 宋体">方法,并传送要合并的另一个</span><span lang="EN-US">MenuItem</span><span style="FONT-FAMILY: 宋体">名称。于是,当前的菜单就组合了两个</span><span lang="EN-US">MenuItem</span><span style="FONT-FAMILY: 宋体">对象。</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">为了执行代码,一般需要使用</span><span lang="EN-US">MenuItem</span><span style="FONT-FAMILY: 宋体">对象的</span><span lang="EN-US">Click</span><span style="FONT-FAMILY: 宋体">事件。在用户单击菜单时,就可以执行需要的处理。一个应遵循的设计规则是不要定义单击事件的处理过程,而是调用另一个方法来执行处理。这样便于在其他地方执行相同的处理。如果仅在单击事件中定义过程,就很难再利用相同的功能。例如,以工具栏上的按钮为例。让工具栏按钮和菜单选项执行相同的功能是很常见的。不能使用相同的事件处理程序,因为事件参数是不同的,所以它们应调用相同的方法,而不是重复编写代码。</span></p></div>
<!-- page -->
<div class="page" style="text-align: center">
<a href="100165551.htm">上一页</a> <a href="index.html">首页</a> <a href="100165553.htm">下一页</a>
</div>
<div style="margin: 0px auto; width: 700px; border: solid 1px #0b5f98;">
<div style="float: left; width: 16px; background-color: #0b5f98; color: White; padding: 1px;">
图书导读
</div>
<div style="float: right; width: 670px; text-align: left; line-height: 16pt; padding-left: 2px">
<!--导读-->
<h1 id="divCurrentNode2" style="color: #b83507; width: 100%; text-align: left; font-size: 12px; padding-left: 2px">当前章节:<a href='100165552.htm'><font color='red'>19.3.18 Menu控件</font></a></h1>
<div id="divRealteNod2" style="padding-left: 2px">
<div style='float:left;width:49%'>·<a href='100165549.htm'>19.3.15 Splitter控件</a></div><div style='float:right;width:49%'>·<a href='100165550.htm'>19.3.16 StatusBar控件</a></div><div style='float:left;width:49%'>·<a href='100165551.htm'>19.3.17 TabControl控件和TabPages控件</a></div><div style='float:right;width:49%'>·<a href='100165553.htm'>19.3.19 ToolBar控件</a></div><div style='float:left;width:49%'>·<a href='100165554.htm'>19.4 窗体</a></div><div style='float:right;width:49%'>·<a href='100165555.htm'>19.4.1 Form类</a></div></div>
</div>
</div>
</div>
</div>
</body>
</html>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?