第10章 Windows控件开发进阶

上传人:熏** 文档编号:243135118 上传时间:2024-09-16 格式:PPT 页数:18 大小:308KB
返回 下载 相关 举报
第10章 Windows控件开发进阶_第1页
第1页 / 共18页
第10章 Windows控件开发进阶_第2页
第2页 / 共18页
第10章 Windows控件开发进阶_第3页
第3页 / 共18页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第10章,Windows,控件开发进阶,在前一章中介绍了,Windows,窗体应用程序开发的基础知识,以及一些常用控件的用法。本章将会介绍一些更高级的内容。掌握这些内容将会使,WinForms,程序界面变得更美观、实用和动态。同时也能处理更多复杂的问题。本章主要涉及到的知识点有:,熟悉菜单和工具栏设计。,编写单文档界面程序和多文档界面程序。,了解窗体的模式,编写自定义对话框。,熟悉,Timer,控件和日期类控件的用法。,熟悉容器控件的用法。,10.1 菜单和工具栏,菜单和工具栏几乎是所有窗体应用程序必不可少的一部分,通过菜单和工具栏的设计,可以使整个应用程序逻辑清晰,结构明了。菜单和工具栏也都属于控件的范畴,本章将讲解菜单和工具栏的用法。,10.1.1 菜单和点菜,【本节示例参考:源代码,chapter1010.1.1,MenuExample,】,先了解一下实际应用中的菜单,在餐馆中,菜单是各种菜式的罗列与展示;在网站上,菜单是网站功能的集合与用户导航;在窗体程序中,菜单一样是程序功能的汇总与分类。如图10.1展示了各式各样的菜单。,Windows,开发用户界面设计中一个非常重要的部分就是菜单,从,Visual C# 2005,开始,菜单的创建就通过,MenuStrip,控件来实现,此控件聚合了菜单的各种样式,从而使我们编写菜单变得更加容易。图10.2展示了,Visual C# 2008,工具箱中的菜单和工具栏选项卡。,10.1.2 其他菜单项,【本节示例参考:源代码,chapter1010.1.1,MenuExample,】,可以看到,菜单项除了,MenuItem,,,还有,TextBox,、,ComboBox,和,Separator。,其中除了,Separator,外,其他项都可以在一级菜单中出现。,TextBox,菜单可以用于接受用户的输入,比如说用户查找、信息搜索等。,ComboBox,菜单提供一个下拉列表,可以通过选择下拉列表触发不同的事件。如图10.7所示为添加了文本框和下拉列表的菜单效果。,Separator,分割条菜单项用于分割同一级的菜单项,使菜单结构更清晰,如图10.8所示。“打开”菜单项和“保存”菜单项之间,以及“另存为”菜单项和“退出”菜单项之间,都加了一个,Separator,分割条菜单项。,10.1.3 上下文菜单,【本节示例参考:源代码,chapter1010.1.3,ContextMenuStripExample,】,上下文菜单是,C#,中的另外一种菜单,又叫弹出菜单或右键菜单,是在右键单击相应的控件时弹出的菜单。,ContextMenuStrip,控件提供了与某个控件关联的快捷操作。为了演示上下文菜单的应用,现创建一个,Windows,应用程序,添加一个菜单控件,MenuStrip,和一个文本框,TextBox,,,设计好控件布局,如图10.10所示。,下面给文本框添加上下文菜单,在,Visual Studio,的工具箱中选择上下文菜单工具,ContextMenuStrip,,,将其添加到窗体,编辑菜单项的方法跟上一节的类似。下面给上下文菜单添加“复制”、“剪切”、“粘贴”三个菜单项。,10.1.4 添加工具栏,【本节示例参考:源代码,chapter1010.1.4,ToolBarExample,】,工具栏是一组图形化的按钮,提供了菜单的快捷访问,工具栏可以整合软件中常用的操作,增强软件的易用性。在常用的软件系统中,工具栏的使用范围相当广,图10.11所示是网页浏览器,Firefox,的界面效果,其中工具栏起到很重要的导航作用。再如图10.12所示是文字编辑软件,Word,的常用工具栏界面效果,,Word,提供了更加丰富的工具栏,极大地方便了用户操作。下面通过一个实例演示工具栏的应用。,10.2,SDI,和,MDI,窗体程序,Windows,应用程序是由一个个的窗体组成的程序,根据窗体之间的关系,一般将窗体应用程序分为三类:单文档界面(,SDI),应用程序、多文档界面(,MDI),应用程序和对话框应用程序。本节将对这三种应用程序的形式分别进行介绍。,10.2.1,SDI,应用程序,【本节示例参考:源代码,chapter1010.2.1,SDIExample,】,单文档界面,SDI(Single Document Interface),应用程序。顾名思义,即一个文档充当一个应用程序的主界面。如果再创建一个文档,则是另一个实例了。单文档界面的应用程序软件是非常普遍的,,Windows,的写字板就是一个典型的单文档界面程序,如图10.13所示。同样,记事本也是单文档界面程序,如图10.14所示。,10.2.2,MDI,应用程序,【本节示例参考:源代码,chapter1010.2.2,MDIExample,】,多文档界面(,MDI),应用程序用于同时显示多个文档,每个文档显示在各自的窗体中。即在一个,MDI,应用程序中,主窗体文档可以包括多个子窗体。如图10.18所示,为一个,MDI,应用程序。,可以看到,一个程序可以有很多窗口。通常,这类程序有一个主窗口,主窗口中可以生成很多子窗口。主窗口的菜单中通常有窗口操作的菜单,如图10.19所示。在这个菜单中显示所有的窗口、活动的窗口以及窗口的显示方式等。,10.2.3 对话框应用程序,【本节示例参考:源代码,chapter1010.2.3,DialogExample,】,对话框是一种特殊的窗体,用于跟用互交互或者传递信息。对话框的,FormBorderStyle,属性为,FixedDialog,,,用户可以通过一般的窗体构建对话框,同时也可以像在窗体中添加控件一样,在对话框中添加控件和布局控件样式。同时,.,NET Framework,还包含了一些常用的对话框,开发人员可以直接将其修改之后,应用于自己的应用程序。,在上一章节,已经学习了几个常用的.,NET Framework,预定义对话框,如,ColorDialog,在此就不再介绍了。接下来我们实现自定义对话框,使用自定义对话框的好处是用户可以自定义对话框显示的内容,实现特殊的功能。,10.3,WinForms,高级控件,Windows,窗体应用程序以其简单可操作性著称,除了前面介绍的常用控件而外,,C#,还提供了其他功能丰富的控件供开发人员使用。在本节将介绍几个功能强大的控件的用法。,10.3.1 日历控件-,MonthCalendar,【,本节示例参考:源代码,chapter1010.3.1,MonthCalendarExample,】,日历控件,MonthCalendar,用于显示日期和选择日期,可以通过日历控件得到当前的日期,也可以得到用户选择的日期。下面通过一个简单的实例来介绍,MonthCalendar,的用法。,(1)创建,Windows,应用程序,向窗体中添加一个,MonthCalendar,控件,添加5个标签控件,如图10.35所示。,(2)编写代码,当窗体加载的时候,显示当前日期,程序代码如下:,private void Form1_Load(object sender,EventArgs,e) /,窗体加载, /将每个标签的“,Text“,属性设置为不同格式的时间,this.label1.Text = this.monthCalendar1.,TodayDate,.,ToString,();,this.label2.Text = this.monthCalendar1.,TodayDate,.,ToLongDateString,();,this.label3.Text = this.monthCalendar1.,TodayDate,.,ToShortDateString,();,this.label4.Text = ,开始日期: +,this.monthCalendar1.,SelectionStart,.,ToString,();,this.label5.Text = ,结束日期: +,this.monthCalendar1.,SelectionEnd,.,ToString,();,10.3.2 日期选择控件-,DateTimePicker,【,本节示例参考:源代码,chapter1010.3.2,DateTimePickerExample,】,日历控件除了,MonthCalendar,外,还有,DateTimePicker,控件。跟,MonthCalendar,控件不同的是,,DateTimePicker,控件只能选择一个日期,而不是连续的日期段。,通过,DateTimePicker,控件的,Value,属性即可获得当前选择的时间值。下面通过一个实例来演示该控件的用法。现创建一个,Windows,应用程序,设计窗体界面如图10.37所示。,当选择,DateTimePicker,控件的时间改变时,文本框中将显示相应的时间值。这需要触发,DateTimePicker,控件的,ValueChanged,事件,编写事件处理程序代码如下:,private void dateTimePicker1_,ValueChanged,(object sender,EventArgs,e),this.,txtDateTime,.Text = this.dateTimePicker1.Value.,ToString,();,10.3.3,计时器控件-,Timer,【,本节示例参考:源代码,chapter1010.3.3,TimerExample,】,计时器控件用于在一定的时间间隔调用一段程序代码。现实中经常会遇到这样的情况,比如闹钟每隔1秒钟走动一次,动画片每隔几毫秒时间切换一帧图像等。这些都可以在程序中实现,只要添加一个计时器即可。,Timer,控件有两个属性非常重要,一个是,Interval,,用于设置间隔的时间,以毫秒为单位;一个是,Enabled,,当设置为,False,时,计时器失效,为,True,则计时器有效。同时,,Timer,还提供了一个,Tick,事件,每隔,Interval,设置的时间间隔,程序就会触发一次,Tick,事件。,下面通过一个倒计时的例子来学习,Timer,的应用。程序实现的功能是:在一个,Label,标签中显示一个数字,这个数字从10开始倒计时,每隔1秒,数字减1,当数字减少到1的时候,显示一个感叹号,同时计时器停止。,10.3.4 面板控件-,Panel,【,本节示例参考:源代码,chapter1010.3.4,ContainerExample,】,Panel,面板控件是一种类似于,GroupBox,的容器控件,用于为其他控件提供可识别的分组。使用面板控件的主要功能是细分窗体,使得界面设计更加灵活美观。,Panel,控件的使用也非常灵活,常用的做法就是将面板添加到主窗体,然后可以在面板中装载更多的控件。下面通过一个简单的程序实例来演示,Panel,控件的应用,通过,Panel,控件的显示和隐藏效果来简化界面,达到简洁美观的目的。,10.3.5 选项卡控件-,TabControl,【,本节示例参考:源代码,chapter1010.3.5,TabControlExample,】,选项卡控件的应用在,Windows,程序中非常普遍,如图10.49为在,Windows,操作系统中,查看“我的电脑”属性的窗体,和查看“桌面”属性的窗体。其中都用到选项卡控件。,10.4 小结,本章是,WinForms,控件操作的进阶篇,分别向读者展示了几种更常用的控件。通过本章,我们学习了以下内容。,(1),菜单是程序常用的功能导航方式,。,WinForms,提供了菜单控件,MenuStrip,,,和上下文菜单控件,ContextMenuStrip,。,(2),工具栏为程序常用的操作提供了便捷访问的功能,,WinForms,提供了,ToolStrip,控件用于实现工具栏。,(3)窗体应用程序分为单文档界面(,SDI),应用程序、多文档界面(,MDI),应用程序和对话框应用程序。,(4),MonthCalendar,控件和,DateTimePicker,控件都是用于日期类型的选择。,(5),Timer,计时器控件能够在一段时间间隔后重复调用一段代码,以此实现许多动态效果。,(6),Panel,控件和,TabControl,控件都是容器控件,容器控件用于方便灵活的布局窗体界面。,本章习题,一、选择题,1,在设计菜单时,若希望某个菜单项前面有一个“”号,应把该菜单项的( )属性设置为,true,AChecked,B,RadioCheck,C,ShowShortcut,DEnabled,2,C#,程序中,为使变量,myForm,引用的窗体对象显示为对话框,必须( ),A,使用,myForm,.,ShowDailog,方法显示对话框,B,将,myForm,对象的,isDialog,属性设为,true,C,将,myForm,对象的,FormBorderStyle,枚举属性设置为,FixedDialog,D,将变量,myForm,改为引用,System.Windows.Dialog,类的对象,3,用鼠标右击一个控件时出现的菜单一般称为( ),A,主菜单,B,菜单项,C,上下文菜单,D,子菜单,二、简答题,仿照,Windows,操作系统自带的记事本,用,WinForms,创建一个记事本程序,实现文件新建、编辑、保存、打开等功能。,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 小学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!