第9章 使用菜单工具栏和对话框.docx
- 文档编号:24139775
- 上传时间:2023-05-24
- 格式:DOCX
- 页数:17
- 大小:495.93KB
第9章 使用菜单工具栏和对话框.docx
《第9章 使用菜单工具栏和对话框.docx》由会员分享,可在线阅读,更多相关《第9章 使用菜单工具栏和对话框.docx(17页珍藏版)》请在冰豆网上搜索。
第9章使用菜单工具栏和对话框
第9章使用菜单、工具栏和对话框
学习目标:
学会使用MenuStrip控件创建菜单
掌握菜单属性和菜单事件的处理方法
学会使用工具栏,并添加按钮实现常见功能
掌握各种通用对话框的使用方法
学会设计应用程序的打印功能
了解MDI应用程序的特点和管理机制
9.1使用菜单
菜单被大量用于Windows应用程序中,它以非常友好的方式向用户提供了各种命令。
在大多数Windows应用程序中,主要存在以下两类菜单。
主菜单:
出现在用户界面的顶部,通常包含顶级菜单,如文件、编辑、帮助等。
弹出菜单:
当用户在用户界面的某个位置右击时出现的菜单,弹出菜单中的命令通常和用户右击的应用程序或环境有关。
在VS2005中,窗体设计器支持在设计用户界面时对菜单和菜单项进行创建和编辑,方法与控件相似:
利用工具箱在窗体上绘制菜单,然后在属性窗口中设置菜单属性,最后编写菜单的事件处理程序。
和其他对象一样,每个菜单都对应着类的一个实例,主菜单和弹出菜单都对应着从System.Windows.Forms.Menu抽象类继承的类,主菜单对应MenuStrip类,而弹出菜单对应ContextMenuStrip类。
所有的菜单都包含一个MenuItem对象集,它们和菜单中的各个选项对应。
9.1.1菜单的设计原则和样式
在大多数Windows应用程序中,菜单栏都出现在相同的位置,而且其中各个菜单的内容是可以预测的。
应用程序的用户界面上通常都提供了一个【编辑】菜单,包含【剪切】、【复制】、【粘贴】、【查找】等命令。
菜单栏上通常还有一些应用程序特有的菜单,单根据约定,菜单栏的最后一个菜单一般都是【帮助】,用户通过该菜单来获取帮助信息和“关于”信息(版权和许可信息等)。
对于一个设计良好的应用程序,大多数菜单都是可以预测的,它们具有以下特点,这确保了用户能够很快熟悉并开始使用应用程序。
主菜单一般都不超过9个,以免显得多而杂乱,且菜单嵌套不超过3级;
菜单都是按照系统的功能来组织的;
菜单树广而浅,而不是窄而深;
菜单都是根据菜单选项的含义来分组的,并且具有一定的规则;
菜单的标题简短、含义明确,通常以关键词开始;
对于常用的菜单命令都设置有快捷键。
9.1.2创建主菜单
在VS2005中,通过工具箱的MenuStrip控件,可以轻松地在窗体中创建主菜单,在标有“请在此处键入”的地方输入名称便可以添加菜单选项,VS2005会在刚才添加选项的下方和右侧添加新的菜单选项。
和其他控件一样,可以利用属性窗口来设置菜单的各种属性。
属性名称
作用
Checked
设置菜单项可以具有复选框的行为,设置为True时会显示一个“√”号,设置为False时将会清除“√”号
CheckOnClick
设置为True时,用户单击它时,就会自动选中或撤销菜单项
DisplayStyle
在菜单项左侧显示图像或文本,只需将该属性设置成Image或ImageAndText即可
Enabled
指定菜单项是被启用还是被禁用,如果它没有被启用,将呈灰色显示
Shortcut
设置菜单项对应的快捷键
ShowShortCut
指定是否在菜单项右侧显示快捷键
Text
指定菜单项的显示文本,可以使用&字符来指定一个快捷键
ToolTipText
指定一条工具提示,用户将鼠标停留在菜单项上方,就会浮现该提示信息
Visible
指定是否在菜单上显示菜单项,比较常见的用法是使用Enabeld属性来指定一个菜单项存在单不可用
9.1.3创建弹出菜单
弹出菜单又称为上下文菜单或关联菜单,这是因为这类菜单是与具体的操作环境和控件紧密相连的,右击不同的控件,将会弹出不同的菜单,显示不同的菜单命令。
9.2使用工具栏
工具栏为Windows用户提供了一种使用常见功能或工具的方法,工具栏中包含多个按钮,每个按钮上面通常都带有图标,它们形象说明了该按钮所能完成的功能。
除了按钮以外,工具栏上有时还会有组合框和文本框。
如果把鼠标停留在工具栏的某个按钮上,就会显示一个提示信息,给出该按钮的使用方法,这对于只包含图标,而没有文本的按钮是十分有用的。
尽管工具栏一般都位于窗体的顶端、底端或两侧,但在很多情况下用户都可以对它们进行移动,以放置到用户更容易使用的地方。
在比较复杂的应用程序中,用户甚至可以设置哪些按钮和工具出现在工具栏中。
9.2.1创建工具栏
弹出菜单又称为上下文菜单或关联菜单,这是因为这类菜单是与具体的操作环境和控件紧密相连的,右击不同的控件,将会弹出不同的菜单,显示不同的菜单命令。
通过ToolBar控件可以在窗体中创建工具栏,第一次将ToolBar控件放置到窗体上时,它看起来非常类似于MenuStrip控件。
但它们之间存在以下两个区别:
ToolBar的最左边有4个垂直排列的点,这与Word中的工具栏相同,这些点表示工具栏可以移动,也可以停靠在父应用程序窗体中。
另外一个区别就是,在默认情况下,工具栏显示的是图像,而不是文本。
从工具栏的下拉菜单中可以选择控件类型:
ToolStripButton(Button):
该控件表示一个按钮,可用于向工具栏中添加带文本或不带文本的按钮。
ToolStripLabel(Label):
该控件表示一个标签。
此外,该控件还可以显示图像,也就是说,这个控件可用于显示一个静态图像,放在不显示其本身信息的另一个控件上面,例如文本框或组合框。
ToolStripSplitButton(SplitButton):
该控件表示一个右端带有下拉按钮的按钮,如果单击该下拉按钮,就会打开一系列按钮,如果只单击按钮,则下拉按钮不会被打开。
ToolStripDropDownButton(DropDownButton):
该控件非常类似于ToolStripSplitButton,唯一的区别在于打开的不是下拉按钮,而是下拉图像,单击控件的任何一部分,都会打开其下拉选项。
ToolStripSeparator(Separator):
该控件表示水平或垂直分隔符。
ToolStripComoBox(ComoBox):
该控件表示一个下拉列表框。
ToolStripTextBox(TextBox):
该控件表示一个文本框。
ToolStripProgressBar(ProgressBar):
该控件表示一个进度条。
属性名称
作用
GripStyle
控制4个垂直排列的点是否显示在工具栏的最左侧,如果隐藏栅格,用户便不能移动工具栏
LayoutStyle
控制工具栏上各个工具和按钮的显示方式,默认为水平显示
Items
是包含工具栏中所有项的集合
ShowItemToolTip
设置是否允许显示工具栏上某项的工具提示
Raft
指定包含ToolStrip的容器,可以在对话框中对ToolStrip进行定位
Stretch
默认情况下,工具栏比包含在其中的项略宽和略高,如果将该属性设置为True,则工具栏将占据其容器的总长
9.2.2显示和隐藏工具栏
很多复杂的应用程序都提供了多个工具栏,例如Word。
用户可以根据实际需要来显示或隐藏其中的一些工具栏,这主要通过【视图】|【工具栏】下的命令来实现。
选择一个命令,如果对应的工具栏是隐藏的,则显示它,如果已经显示,则隐藏它。
显示的工具栏通常在工具栏对应的菜单命令前面有选中标记。
9.3使用通用对话框
在Windows应用程序中,打开和保存文件、访问打印机、选择字体和颜色都是最基本的功能。
对于设计人员而言,不需要自己创建定制的对话框来实现上述功能,.NETFramework提供了与这些Windows对话框相关的类,设计者可以直接使用它们,这极大减少了代码的编写量,同时也能够使程序有标准的外观和操作方式。
9.3.1CommonDialog类
.NETFramework提供的各种对话框类,除了PrintPreviewDialog外(继承于Form类),其他的都派生于抽象类CommonDialog,通过该抽象类的方法来管理各种Windows通用对话框。
所有的Windows对话框类都封装了一个Windows通用对话框,使得该对话框可用于.NET应用程序。
但PrintPreviewDialog类除外,它是通过将自己的元素添加到Windows窗体上,来控制打印预览,因而它并不是一个真正的对话框。
抽象类CommonDialog提供了一些公共的方法和事件,它们适用于所有的Windows通用对话框类:
ShowDialog:
该方法可用于显示一个通用对话框。
Reset:
该方法用于将对话框的所有属性设置成默认值。
HelpRequest:
当用户单击对话框上的【帮助】按钮时,就引发该事件。
9.3.2文件打开对话框——OpenFileDialog
如果要让用户选择和浏览要打开的文件,应使用OpenFileDialog,通过配置该对话框的属性,可以允许用户在对话框中选择一个文件或同时选择多个文件。
使用文件打开对话框
修改对话框的标题
指定文件打开目录
设置文件过滤器
有效性验证
设置帮助
OpenFileDialog对话框的返回结果
privatevoid打开OToolStripButton_Click(objectsender,EventArgse)
{
OpenFileDialogdlg=newOpenFileDialog();
dlg.ShowDialog();
}
dlg.Title=”打开文件”;
stringdir=Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
dlg.InitialDirectory=dir;
dlg.Filter="文本文件(*.txt)|*.txt|所有文件|*.*";
在试图打开一个文件之前,OpenFileDialog可以自动对文件进行有效性验证。
当ValidateNames属性是True时,就会检查用户输入的文件名,看它是否是一个有效的Windows文件名。
此外,还可以使用CheckFileExists验证文件的有效性,使用
CheckPathExits验证路径的有效性。
OpenFileDialog提供了一个帮助按钮,但在默认情况下该按钮是不显示的,可以将ShowHelp属性设置为True,该按钮便可见。
同时,设计者也可以为HelpRequest事件添加一个事件处理程序,用于给用户提供帮助信息。
OpenFileDialog的ShowDialog方法会返回一个DialogResualt枚举,该枚举包含属性成员Abort、Cancel、Ignore、No、None、OK、Retry和Yes。
9.3.3文件保存对话框——SaveFileDialog
在Windows应用程序中,如果要保存用户输入的资料,则可以使用SaveFileDialog对话框类,通过该对话框类,用户可以为要保存的文件指定文件名、路径和保存类型。
属性名称
作用
AddExtension
如果设置为True,则允许对话框在文件名之后附加由DefaultExt属性指定的文件扩展名,但前提是用户在输入保存文件名时没有指定文件扩展名
DefaultExt
如果用户没有指定文件扩展名,则默认为txt
OverwritePrompt
如果设置为True,则当用户试图用现有文件覆盖已经存在的文件时,就向用户发出警告,为了启用这个功能,设计时必须将ValidateName属性设置为True,即启用文件名校验功能
9.3.4字体对话框——FontDialog
通过FontDialog可以允许用户设置选中字体的格式,包括样式、字号、颜色等。
9.3.5颜色对话框——ColorDialog
FontDialog控件中提供了设计字体颜色的功能,但在很多情况下,给定的基本颜色往往满足不了用户的需求,此时设计人员就需要使用ColorDialog来为用户提供颜色定制的功能。
9.4使用打印机
如果用户需要将Windows应用程序在屏幕上的输出效果打印到纸上,则设计人员就需要在设计应用程序时,为用户提供打印功能,包括选择打印机、设置打印页面、打印预览等。
System.Drawing.Printing命名空间中的类可以完成上述设计任务。
9.4.1.NET的打印机制
System.Drawing.Printing命名空间中的类有30多个,而实际上起关键作用的类是PrintDocument,它是打印的基类,通过方法Print来启动一系列打印调用,包括页面设置、打印预览等,最后调用OnPrintPage方法,将最终结果输送给打印机。
打印的必要条件是:
执行打印的Windows应用程序,PrintDocument的一个实例和打印序列的一个PrintController。
首先,应用程序必须调用PrintDocument的Print方法,启动调用序列,因为PrintDocument本身并不负责打印。
然后PrintController执行操作,通知PrintDocument,通过调用OnBeginPrint方法开始打印。
如果应用程序在打印任务的开始执行了某些操作,就必须在PrintDocument中注册一个PrintPage事件处理程序,这样才会在应用程序类中接到该通知。
开始阶段完成后,PrintController进入PrintLoop,为每个需要打印的页面调用PrintDocument的OnPrintPage方法,该方法调用所有的PrintPage事件处理程序。
必须对每个页面执行该事件处理程序,否则将不会打印任何内容。
打印完最后一页后,PrintController就调用PrintDocument的OnEndPrint方法。
9.4.2打印文档
要使用.NET负责打印的类,必须在Form1.cs代码头部添加对
“System.Drawing.Printing”命名空间的引用。
privatevoidprintDocument_PrintPage(objectsender,PrintPageEventArgse)
{
char[]param={'\n'};
string[]lines=richTextBox.Text.Split(param);
inti=0;
char[]trimparam={'\r'};
foreach(stringsinlines)
{
lines[i++]=s.TrimEnd(trimparam);
}
intx=20;
inty=20;
foreach(stringlineinlines)
{
e.Graphics.DrawString(line,newFont("宋体",10),Brushes.Black,x,y);
y+=15;
}
}
但该应用程序所能够完成的打印不是十分完美,主要存在以下缺陷:
不能打印多个页面,如果要打印的文档分布在多个页面上,使用上述的方法则只能打印第一页,而且不能打印页眉和页脚;
打印页面的边距是由程序硬性编码决定的,用户不能自定义打印边界;
应用程序通过默认的打印机来进行打印,如果存在多个打印机,则程序会限制用户对打印机的选择;
打印的字体和颜色等也是由应用程序硬性编码决定的,用户不能自行定义。
9.4.3打印多页
由于打印时每个页面都要调用PrintPage事件,因而只要将PrintPageEventArgs的HasMorePages属性设置为True,通知PrintController当前打印的页面不是最后一页,即可实现多个页面的打印。
privatevoidprintDocument_PrintPage(objectsender,PrintPageEventArgse)
{
intx=20;
inty=20;
while(linesPrinted { e.Graphics.DrawString(lines[linesPrinted++],newFont("宋体",10),Brushes.Black,x,y); y+=15; if(y>e.PageBounds.Height-80) { e.HasMorePages=true; return; } } linesPrinted=0; e.HasMorePages=false; } 9.4.4设置页面对话框——PageSetupDialog 通过PageSetupDialog可以为应用程序添加一个页面设置对话框,和Word一样,通过该对话框,可以设置页面大小、纸张来源、打印方向、页边距等,由于这些选项都是针对打印机的,因而,通过该对话框也可以选择要使用的打印机。 9.4.5打印对话框——PrintDialog 在应用程序中使用PrintDialog可以允许用户从已经安装的打印机中选择一台打印机,设置打印的页码和份数等。 【打印】对话框中包括3个选项区域: 【选择打印机】、【页面范围】和【份数】。 在【选择打印机】选项区域,包含一个【打印到文件】复选框,选中该复选框,用户可以将输出结果打印到一个文件中,而不是打印机上,并打开【打印到文件】对话框,提示用户输入要将结果打印到的目标文件。 如果设计者希望在自己的应用程序中禁用这个复选框,可将PrintDialog的【AllowPrintToFile】属性设置为False。 9.4.6打印预览——PrintPreviewDialog与PrintPreviewControl 在.NET中实现打印预览功能是十分方便的,主要通过PrintPreviewDialog来实现。 该类继承于System.Windows.Forms.Form,因而它是一个窗体对象,继承了窗体的所有属性和方法,而不是一个通用的对话框。 可以通过【打印预览】窗口顶部的工具栏设置一次显示的页数和显示大小,通过【页】微调框遍历所有要打印的页面。 观察Word中的【打印预览】窗口,可以发现预览是在Word的主窗口中进行显示的,设计者如果希望在自己的应用程序中实现这种效果,可以借助PrintPreviewControl这个类。 9.5SDI与MDI应用程序 传统上,可以为Windows编写3种应用程序,分别是: 基于对话框的应用程序: 此类应用程序用途通常比较单一,主要用于完成用户输入量非常少的特定任务,或者专门处理某一类型的数据,其典型应用就是Windows中的计数器。 SDI(单一文档界面,SingleDocumentInterface)应用程序: 此类应用程序只包含一个窗口,窗口中包含了菜单栏、工具栏等,用于完成一个特定任务,同时也允许将要处理的文档加载到应用程序中,但如果用户要打开另外一个文档,就必须打开一个新的应用程序实例,它与第一个实例没有任何关系,对其中一个实例的任何配置都不会影响到其他的实例。 其典型应用就是Word,本章一直作为示例使用的Windows应用程序也是SDI应用程序。 MDI(多文档界面,MultiDocumentInterface)应用程序: 此类应用程序的执行方式和SDI应用程序相似,只不过可以同时打开多个窗口,并且可以在任一时刻在不同的窗口中保存多个已经打开的文档,其标签显示在菜单栏的【窗口】菜单项中,典型代表是AdobeAcrobatReader。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第9章 使用菜单工具栏和对话框 使用 菜单 工具栏 对话框