Windows控件开发进阶.ppt_第1页
Windows控件开发进阶.ppt_第2页
Windows控件开发进阶.ppt_第3页
Windows控件开发进阶.ppt_第4页
Windows控件开发进阶.ppt_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第10章 Windows控件开发进阶,在前一章中介绍了Windows窗体应用程序开发的基础知识,以及一些常用控件的用法。本章将会介绍一些更高级的内容。掌握这些内容将会使WinForms程序界面变得更美观、实用和动态。同时也能处理更多复杂的问题。本章主要涉及到的知识点有: 熟悉菜单和工具栏设计。 编写单文档界面程序和多文档界面程序。 了解窗体的模式,编写自定义对话框。 熟悉Timer控件和日期类控件的用法。 熟悉容器控件的用法。,10.1 菜单和工具栏,菜单和工具栏几乎是所有窗体应用程序必不可少的一部分,通过菜单和工具栏的设计,可以使整个应用程序逻辑清晰,结构明了。菜单和工具栏也都属于控件的范畴,本章将讲解菜单和工具栏的用法。,10.1.1 菜单和点菜,【本节示例参考:源代码chapter1010.1.1MenuExample】 先了解一下实际应用中的菜单,在餐馆中,菜单是各种菜式的罗列与展示;在网站上,菜单是网站功能的集合与用户导航;在窗体程序中,菜单一样是程序功能的汇总与分类。如图10.1展示了各式各样的菜单。 Windows开发用户界面设计中一个非常重要的部分就是菜单,从Visual C# 2005开始,菜单的创建就通过MenuStrip控件来实现,此控件聚合了菜单的各种样式,从而使我们编写菜单变得更加容易。图10.2展示了Visual C# 2008工具箱中的菜单和工具栏选项卡。,10.1.2 其他菜单项,【本节示例参考:源代码chapter1010.1.1MenuExample】 可以看到,菜单项除了MenuItem,还有TextBox、ComboBox和Separator。其中除了Separator外,其他项都可以在一级菜单中出现。 TextBox菜单可以用于接受用户的输入,比如说用户查找、信息搜索等。ComboBox菜单提供一个下拉列表,可以通过选择下拉列表触发不同的事件。如图10.7所示为添加了文本框和下拉列表的菜单效果。 Separator分割条菜单项用于分割同一级的菜单项,使菜单结构更清晰,如图10.8所示。“打开”菜单项和“保存”菜单项之间,以及“另存为”菜单项和“退出”菜单项之间,都加了一个Separator分割条菜单项。,10.1.3 上下文菜单,【本节示例参考:源代码chapter1010.1.3ContextMenuStripExample】 上下文菜单是C#中的另外一种菜单,又叫弹出菜单或右键菜单,是在右键单击相应的控件时弹出的菜单。ContextMenuStrip控件提供了与某个控件关联的快捷操作。为了演示上下文菜单的应用,现创建一个Windows应用程序,添加一个菜单控件MenuStrip和一个文本框TextBox,设计好控件布局,如图10.10所示。 下面给文本框添加上下文菜单,在Visual Studio的工具箱中选择上下文菜单工具ContextMenuStrip,将其添加到窗体,编辑菜单项的方法跟上一节的类似。下面给上下文菜单添加“复制”、“剪切”、“粘贴”三个菜单项。,10.1.4 添加工具栏,【本节示例参考:源代码chapter1010.1.4ToolBarExample】 工具栏是一组图形化的按钮,提供了菜单的快捷访问,工具栏可以整合软件中常用的操作,增强软件的易用性。在常用的软件系统中,工具栏的使用范围相当广,图10.11所示是网页浏览器Firefox的界面效果,其中工具栏起到很重要的导航作用。再如图10.12所示是文字编辑软件Word的常用工具栏界面效果,Word提供了更加丰富的工具栏,极大地方便了用户操作。下面通过一个实例演示工具栏的应用。,10.2 SDI和MDI窗体程序,Windows应用程序是由一个个的窗体组成的程序,根据窗体之间的关系,一般将窗体应用程序分为三类:单文档界面(SDI)应用程序、多文档界面(MDI)应用程序和对话框应用程序。本节将对这三种应用程序的形式分别进行介绍。,10.2.1 SDI应用程序,【本节示例参考:源代码chapter1010.2.1SDIExample】 单文档界面SDI(Single Document Interface)应用程序。顾名思义,即一个文档充当一个应用程序的主界面。如果再创建一个文档,则是另一个实例了。单文档界面的应用程序软件是非常普遍的,Windows的写字板就是一个典型的单文档界面程序,如图10.13所示。同样,记事本也是单文档界面程序,如图10.14所示。,10.2.2 MDI应用程序,【本节示例参考:源代码chapter1010.2.2MDIExample】 多文档界面(MDI)应用程序用于同时显示多个文档,每个文档显示在各自的窗体中。即在一个MDI应用程序中,主窗体文档可以包括多个子窗体。如图10.18所示,为一个MDI应用程序。 可以看到,一个程序可以有很多窗口。通常,这类程序有一个主窗口,主窗口中可以生成很多子窗口。主窗口的菜单中通常有窗口操作的菜单,如图10.19所示。在这个菜单中显示所有的窗口、活动的窗口以及窗口的显示方式等。,10.2.3 对话框应用程序,【本节示例参考:源代码chapter1010.2.3DialogExample】 对话框是一种特殊的窗体,用于跟用互交互或者传递信息。对话框的FormBorderStyle属性为FixedDialog,用户可以通过一般的窗体构建对话框,同时也可以像在窗体中添加控件一样,在对话框中添加控件和布局控件样式。同时,.NET Framework还包含了一些常用的对话框,开发人员可以直接将其修改之后,应用于自己的应用程序。 在上一章节,已经学习了几个常用的.NET Framework预定义对话框,如ColorDialog在此就不再介绍了。接下来我们实现自定义对话框,使用自定义对话框的好处是用户可以自定义对话框显示的内容,实现特殊的功能。,10.3 WinForms高级控件,Windows窗体应用程序以其简单可操作性著称,除了前面介绍的常用控件而外,C#还提供了其他功能丰富的控件供开发人员使用。在本节将介绍几个功能强大的控件的用法。,10.3.1 日历控件-MonthCalendar,【本节示例参考:源代码chapter1010.3.1MonthCalendarExample】 日历控件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.2DateTimePickerExample】 日历控件除了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.3TimerExample】 计时器控件用于在一定的时间间隔调用一段程序代码。现实中经常会遇到这样的情况,比如闹钟每隔1秒钟走动一次,动画片每隔几毫秒时间切换一帧图像等。这些都可以在程序中实现,只要添加一个计时器即可。 Timer控件有两个属性非常重要,一个是Interval,用于设置间隔的时间,以毫秒为单位;一个是Enabled,当设置为False时,计时器失效,为True则计时器有效。同时,Timer还提供了一个Tick事件,每隔Interval设置的时间间隔,程序就会触发一次Tick事件。 下面通过一个倒计时的例子来学习Timer的应用。程序实现的功能是:在一个Label标签中显示一个数字,这个数字从10开始倒计时,每隔1秒,数字减1,当数字减少到1的时候,显示一个感叹号,同时计时器停止。,10.3.4 面板控件-Panel,【本节示例参考:源代码chapter1010.3.4ContainerExample】 Panel面板控件是一种类似于GroupBox的容器控件,用于为其他控件提供可识别的分组。使用面板控件的主要功能是细分窗体,使得界面设计更加灵活美观。Panel控件的使用也非常灵活,常用的做法就是将面板添加到主窗体,然后可以在面板中装载更多的控件。下面通过一个简单的程序实例来演示Panel控件的应用,通过Panel控件的显示和隐藏效果来简化界面,达到简洁美观的目的。,10.3.5 选项卡控件-TabControl,【本节示例参考:源代码chapter1010.3.5TabControlExample】 选项卡控件的应用在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 BRadioCheck CShowShortcut DEnabled 2C#程序中,为使变量myForm 引用的窗体对象显示为对话框,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论