《C第6章窗体、控件和组件》由会员分享,可在线阅读,更多相关《C第6章窗体、控件和组件(144页珍藏版)》请在金锄头文库上搜索。
1、1 1第第6 6章章 窗体、控件和组件窗体、控件和组件6.1窗体与窗体与对话框框6.2控件共有的基本操作控件共有的基本操作6.3容器容器类控件和控件和组件件6.4文本操作文本操作类控件控件6.5选择操作操作类控件控件6.6图像操作像操作类控件和控件和组件件6.7菜菜单、工具、工具栏与状与状态栏6.8视图操作操作类控件控件6.9其他常用控件其他常用控件2 2界面设计举例界面设计举例1-1-动物的故事(动物的故事(KeyboardAndEventExampleKeyboardAndEventExample)3 3界面设计举例界面设计举例2-2-打飞鸟(打飞鸟(DownBirdDownBird)4
2、4界面设计举例界面设计举例3-Vista3-Vista图片变换效果(图片变换效果(vistaPictureBoxExample)vistaPictureBoxExample)5 5界面设计举例界面设计举例4-XP4-XP风格的风格的windowwindow窗体窗体(SplitContainerExample)(SplitContainerExample)6 6WindowWindow应用程序的生命周期应用程序的生命周期所谓所谓“ “应用程序应用程序” ”,就是一个进程。,就是一个进程。假设只有一个线程,即主线程。主线程逐句执行线程体的代假设只有一个线程,即主线程。主线程逐句执行线程体的代码,当
3、执行完之后,程序结束,进程空间释放。码,当执行完之后,程序结束,进程空间释放。static voidstatic void Main() Main() Console.WriteLine(Console.WriteLine(Hello, World!Hello, World!); ); Console.WriteLine( Console.WriteLine(This is a demo!This is a demo!); ); Console.WriteLine( Console.WriteLine(writen by xialuning!writen by xialuning!); );
4、主线程体执行完了,进程退出。控制台窗口也随之消失。7 7窗体应用程序窗体应用程序窗体应用程序,为什么一直存在而不消失(除非显式点击关闭按钮)?“窗体”大概可以分为前台和后台两个部分。从前台来讲,“窗体”是一个可见的窗口”;从后台来讲,“窗体”是一个消息循环。protected override voidprotected override void WndProc( WndProc(refref Message m)Message m) switchswitch (m.Msg) (m.Msg) casecase WM_COMMAND: WM_COMMAND: . .breakbreak; ;c
5、asecase WM_C WM_CLOSELOSE: : . .breakbreak; ; basebase.WndProc(.WndProc(refref m); m); 消息循环(消息泵):消息循环(消息泵):主线程不停的尝试接收来主线程不停的尝试接收来自自WindowsWindows系统的消息;系统的消息;当有消息到来时,就处理;当有消息到来时,就处理;无消息到来,无限等待;无消息到来,无限等待;WM_CLOSEWM_CLOSE或或WM_DESTROYWINDOWWM_DESTROYWINDOW等消息到等消息到来时,主线程结束。来时,主线程结束。8 8消息循环(了解)消息循环(了解)Wi
6、ndows是以消息是以消息驱动的操作系的操作系统,Windows消息提供了消息提供了应用程序与用程序与应用程序以及用程序以及应用程序与用程序与Windows系系统之之间进行通行通讯的手段。的手段。 Windows中有一个系中有一个系统消息消息队列,列,对于每一个正在于每一个正在执行的行的Windows应用程序用程序,系系统为其建立一个其建立一个“消息消息队列列”,即,即应用程序用程序队列,用来存放列,用来存放该程程序可能序可能创建的各种窗口的消息。建的各种窗口的消息。应用程序中含有一段称作用程序中含有一段称作“消息循消息循环”的代的代码,用来从消息,用来从消息队列中列中检索索这些消息并把它些消
7、息并把它们分分发到相到相应的窗口函数中。的窗口函数中。 Windows应用程序用程序创建的每个窗口都在系建的每个窗口都在系统核心注册一个相核心注册一个相应的窗口函数,的窗口函数,窗口函数程序代窗口函数程序代码形式上是一个巨大的形式上是一个巨大的switch语句,用以句,用以处理由消息循理由消息循环发送到送到该窗口的消息,窗口函数由窗口的消息,窗口函数由Windows采用消息采用消息驱动的形式直接的形式直接调用,而不是由用,而不是由应用程序用程序显示示调用的,窗用的,窗口函数口函数处理完消息后又将控制理完消息后又将控制权返回返回给Windows。9 9窗体应用程序与控制台应用程序窗体应用程序与控
8、制台应用程序控制台程序没有消息循控制台程序没有消息循环(假如不在控制台程序中使用窗体)(假如不在控制台程序中使用窗体),主,主线程代程代码依次依次执行后就行后就结束束控制台程序适于代控制台程序适于代码验证和代和代码功能演示,功能演示,执行一段代行一段代码,然后在,然后在控制台控制台输出出结果。果。窗体窗体应用程序在后台使用消息循用程序在后台使用消息循环来运作,前台使用窗体控件来运作,前台使用窗体控件来提供用来提供用户交互界面。交互界面。1010WindowsWindows应用程序中的应用程序中的Program.csProgram.cs文件文件特性描述,使应用程序能够特性描述,使应用程序能够与与
9、COMCOM组件进行互操作;组件进行互操作;使窗体应用操作系统提使窗体应用操作系统提供的样式供的样式启动应用程序,启动应用程序,显示窗体显示窗体Form1Form111116.1 6.1 窗体与窗体与对话框框1、窗体、窗体应用程序的启用程序的启动和停止和停止使用使用Application类提供的静提供的静态方法来启方法来启动、停止、停止应用程序。用程序。Application类提供的方法:提供的方法:lRun方法:方法:调用用 Run以便在当前以便在当前线程上启程上启动应用程序消息循用程序消息循环,并可以,并可以选择使某使某窗体可窗体可见。lExit或或ExitThread方法:用于停止消息循
10、方法:用于停止消息循环。lDoEvents方法:用于在程序方法:用于在程序处于某个循于某个循环中中时处理消息。理消息。l调用用 AddMessageFilter以向以向应用程序消息用程序消息泵添加消息添加消息筛选器来器来监视 Windows消息。消息。lIMessageFilter可以阻止引可以阻止引发某事件或在某事件或在调用某事件用某事件处理程序前理程序前执行特殊操行特殊操作。作。1212 当运行当运行 Windows窗体窗体时,它将,它将创建新窗体,然后建新窗体,然后该窗体等待窗体等待处理事件。理事件。该窗窗体在每次体在每次处理事件理事件时,均将,均将处理与理与该事件关事件关联的所有代的所
11、有代码。所有其他事件在所有其他事件在队列中等待。在代列中等待。在代码处理事件理事件时,应用程序用程序并不响并不响应。例如,当将另一窗口拖到。例如,当将另一窗口拖到该窗口前面窗口前面时,该窗口窗口不重新不重新绘制。制。 如果在代如果在代码中中调用用 DoEvents,则您的您的应用程序可以用程序可以处理其他事件。例如,如果理其他事件。例如,如果您有向您有向 ListBox添加数据的窗体,并将添加数据的窗体,并将 DoEvents添加到代添加到代码中,那么当将另一窗口拖到您的窗体上中,那么当将另一窗口拖到您的窗体上时,该窗窗体将重新体将重新绘制。如果从代制。如果从代码中移除中移除 DoEvents
12、,那么在按,那么在按钮的的单击事件事件处理程序理程序执行行结束以前,束以前,您的窗体不会重新您的窗体不会重新绘制。制。6.1 6.1 窗体与窗体与对话框框1313窗体的常用方法和事件窗体的常用方法和事件方法和事件名方法和事件名说明说明Close()方法方法使窗体关闭,并释放资源;使窗体关闭,并释放资源;Hide()方法方法使窗体隐藏,并不释放资源;使窗体隐藏,并不释放资源;Show()方法方法显示窗体;显示窗体;Load事件事件加载窗体时处理的事件;加载窗体时处理的事件;Click事件事件鼠标单击窗体时处理的事件;鼠标单击窗体时处理的事件;Closing、Closed事件事件窗体关闭时处理的事
13、件;窗体关闭时处理的事件;GetFocus事件事件窗体获得焦点时处理的事件;窗体获得焦点时处理的事件;Activated事件事件激活窗体时处理的事件;激活窗体时处理的事件;14146.1.2 6.1.2 窗体的窗体的创建、建、显示与示与隐藏藏1、如何在代、如何在代码中打开一个新窗体中打开一个新窗体Form2fm=newForm2();fm.Show();/或者或者fm.ShowDialog();注意注意Show()和和ShowDialog()区区别;2、如何在代、如何在代码中关中关闭一个窗体一个窗体用法用法1:fm.Close();用法用法2:this.Close();用法用法3:Applic
14、ation.OpenFormsForm1.Close();OpenForms是当前是当前应用程序中,所有已用程序中,所有已创建、未建、未释放的窗体的放的窗体的集合;若当前窗体是集合;若当前窗体是应用程序的主窗体,用程序的主窗体,则在关在关闭当前窗体的当前窗体的同同时,直接退出,直接退出应用程序;用程序;15153、如何、如何隐藏一个打开的窗体藏一个打开的窗体(1)隐藏当前窗体:藏当前窗体:this.Hide();(2)隐藏其它窗体:藏其它窗体:Application.OpenFormsForm1.Hide();隐藏窗体是使窗体不可藏窗体是使窗体不可见,但,但该窗体所占用的窗体所占用的资源并没有
15、被源并没有被释放放,随,随时可以通可以通过调用用该窗体的窗体的Show方法将其方法将其显示。示。4、如何重新、如何重新显示示隐藏的窗体藏的窗体(1)显示当前窗体:示当前窗体:this.Show();(2)显示其它窗体:示其它窗体:Application.OpenForms“Form1”.Show();/显示示Form1窗体窗体6.1.2 6.1.2 窗体的窗体的创建、建、显示与示与隐藏藏16165.选择启启动窗体窗体启启动窗体可以根据需要窗体可以根据需要进行行设置或更改,在置或更改,在“解决方案解决方案资源管理源管理器器”中打开中打开Program.cs文件,若要使文件,若要使项目中的目中的F
16、orm2窗体成窗体成为启启动窗体,在窗体,在Main方法中将方法中将Form1修改修改为Form2即可,代即可,代码如如下:下:staticvoidMain()Application.EnableVisualStyles();Application.SetCompatibleTextRenderingDefault(false);Application.Run(newForm2();6.1.2 6.1.2 窗体的窗体的创建、建、显示与示与隐藏藏17176关关闭应用程序用程序Application.Exit();l退出当前退出当前应用程序,关用程序,关闭该应用程序中的所有窗体;用程序中的所有窗体
17、;关关闭窗体窗体时,该窗体所占用的窗体所占用的资源也会被源也会被释放放6.1.2 6.1.2 窗体的窗体的创建、建、显示与示与隐藏藏1818关闭多个窗体关闭多个窗体(Application.OpenFormsApplication.OpenForms)intcount=Application.OpenForms.Count;for(inti=count-1;i=0;i-)if(Application.OpenFormsi.Name=Form2)Application.OpenFormsi.Close();1919但是不能使用如下形式:但是不能使用如下形式:for(inti=0;icount;i
18、+)(Application.OpenFormsi.Name=Form2)Application.OpenFormsi.Close();原因在于每关闭一个窗体之后通过Application.OpenForms所获取属于应用程序的打开窗体的集合就会发生变化,导致索引引用超出范围。关闭多个窗体关闭多个窗体(Application.OpenFormsApplication.OpenForms)20206.1.2 6.1.2 窗体的窗体的创建、建、显示与示与隐藏藏【例例6-1】演示窗体的基本用法以及如何演示窗体的基本用法以及如何显示和关示和关闭窗体。窗体。部分运行效果如部分运行效果如图:2121C#C
19、#中的中的InitializeComponent()InitializeComponent()方法方法在每一个窗体生成的在每一个窗体生成的时候,都会候,都会针对于当前的窗体定于当前的窗体定义InitializeComponent()方法,方法,该方法方法实际上是由系上是由系统生成的生成的对于窗于窗体界面的定体界面的定义方法。方法。在每一个在每一个Form文件建立后,都会同文件建立后,都会同时产生程序代生程序代码文件文件.CS文件,以及与之相匹配的文件,以及与之相匹配的.designer.cs文件,文件,业务逻辑以及事以及事件方法等被件方法等被编写在写在.CS文件之中,而界面文件之中,而界面设计
20、规则被封装在被封装在.Designer.CS文件里。文件里。2222在在.designer.cs代代码之中,可以很容易之中,可以很容易发现InitializeComponent()方法和方法和Dispose()方法,前者方法,前者为界面界面设计的的变现内容,后内容,后者者为表表单释放系放系统资源源时候候执行行编码。InitializeComponent()方法反映了窗体方法反映了窗体设计器中窗体和控件器中窗体和控件的属性。如果更改的属性。如果更改InitializeComponent()方法中的相关属性方法中的相关属性参数,相参数,相应的的变化在窗体化在窗体设计器界面上也会器界面上也会显示出来
21、。示出来。Form1.Designer.cs里的是定里的是定义 (函数名后面有大括号包含定(函数名后面有大括号包含定义内容)内容)Form1.cs里的是里的是调用用 (函数名后面分号(函数名后面分号结尾)尾)C#C#中的中的InitializeComponent()InitializeComponent()方法方法2323注意:注意:InitializeComponent()方法写在前面和后面是有区方法写在前面和后面是有区别的。的。InitializeComponent()方法是用来初始化窗体方法是用来初始化窗体组件的,在件的,在InitializeComponent之前,窗体的各个控件之前,
22、窗体的各个控件还没有没有进行初始化,比如行初始化,比如说窗体上有一个窗体上有一个TextBoxUserName,在,在InitializeComponent()之前它之前它还只是一个只是一个TextBox类型的型的变量而已,如果在量而已,如果在InitializeComponent()之前之前调用用这个个TextBox的属性或方法,就会出的属性或方法,就会出错。C#C#中的中的InitializeComponent()InitializeComponent()方法方法24246.1.3窗体常用的属性窗体常用的属性属性属性含义含义注意注意Name窗体的名称,代码中通过该属性来访窗体的名称,代码中
23、通过该属性来访问窗体问窗体一般起有意义的名称,一般起有意义的名称,采用采用Camel命名法命名法BackColor窗体的背景色窗体的背景色ForeColor窗体上文本的前景色窗体上文本的前景色Location以屏幕坐标表示的代表窗体左上角的以屏幕坐标表示的代表窗体左上角的坐标位置坐标位置只有当只有当StartPosition属属性值为性值为Manual时有效时有效Size窗体的高度和宽度窗体的高度和宽度Text控件上所要显示的文本,如标签、按控件上所要显示的文本,如标签、按钮上的文字钮上的文字ControlBox决定是否显示窗体右上角的控制按钮决定是否显示窗体右上角的控制按钮(最小化、最大化、
24、关闭)(最小化、最大化、关闭)相关属性相关属性MinimizeBox和和MaximizeBoxWindowState窗体的初始状态,窗体的初始状态,FormWindowState枚举值枚举值2525HelpButton属性属性如果当如果当ControlBox=true;MaxmizeBox=false;MinimizeBox=false;而而 HelpButton=true时就可以看到有个帮助的按就可以看到有个帮助的按钮出出现在关在关闭按按钮旁旁边。6.1.3 6.1.3 窗体常用的属性窗体常用的属性26266.1.4 6.1.4 窗体常用属性窗体常用属性设置窗体属性的途径有置窗体属性的途径有
25、2种:种:l在在设计模式下利用模式下利用【属性属性】窗口窗口设置窗体属性。置窗体属性。l在代在代码编辑模式下模式下设置窗体属性。置窗体属性。补充例充例题2(FormSetExample)27276.1.4 6.1.4 窗体位置及外观控制窗体位置及外观控制StartPostion:获取或取或设置运行置运行时窗体的起始位置,一般在构造窗体的起始位置,一般在构造函数中函数中设置此属性。置此属性。注意位置注意位置语句必句必须写在构造函数中。写在构造函数中。例如:例如:this.StartPosition=FormStartPosition.Manual;this.Location=newPoint(s
26、creenX,screenY);通通过设置窗体的置窗体的【ControlBox】属性属性为“True”或者或者“False”,可以控制是否,可以控制是否显示最大化、最小化以及关示最大化、最小化以及关闭按按钮。除此之。除此之外,外,还可以通可以通过设置窗体的置窗体的【FormBorderStyle】属性控制窗体属性控制窗体的的边框框样式式.2828设置窗体起始位置,需要首先了解计算机屏幕的坐标系。和通常的坐设置窗体起始位置,需要首先了解计算机屏幕的坐标系。和通常的坐标系起始点不同,计算机屏幕坐标系原点位于屏幕左上角。其标系起始点不同,计算机屏幕坐标系原点位于屏幕左上角。其X X轴水平轴水平向右,
27、向右,Y Y轴垂直向下。以计算机屏幕分辨率为轴垂直向下。以计算机屏幕分辨率为800800600600为例,其为例,其X X轴最轴最大值为大值为800800像素,像素,Y Y轴最大值为轴最大值为600600像素。像素。6.1.4 6.1.4 窗体位置及外观控制窗体位置及外观控制属 性意 义FormStartPosition.Manual根据自定义位置显示初始位置FormStartPosition.CenterScreen在屏幕中央显示初始位置FormStartPosition.WindowsDefaultLocationWindows默认位置,但大小由属性决定FormStartPosition.
28、WindowsDefaultBoundsWindows默认位置和默认大小FormStartPosition.CenterParent在父窗口的中央显示初始位置29296.1.4 6.1.4 窗体位置及外观控制窗体位置及外观控制【例例6-2】演示如何控制窗体的演示如何控制窗体的显示位置以及如何控制窗体的外示位置以及如何控制窗体的外观形状。形状。设计视图如下:如下:运行效果如下:运行效果如下:3030loadload()事件在第一次()事件在第一次显示窗体前示窗体前发生,可以使用此事件生,可以使用此事件执行行一些任一些任务,如分配窗体使用的,如分配窗体使用的资源。源。6.1.4 6.1.4 窗体位
29、置及外观控制窗体位置及外观控制31316.1.5单文档窗体和多文档窗体文档窗体和多文档窗体单文档窗体:窗体体之文档窗体:窗体体之间相互独立;相互独立;多文档窗体(多文档窗体(Multi-DocumentInterface,MDI)l在一个主窗体中,可以包含一个或多个子窗体在一个主窗体中,可以包含一个或多个子窗体;l主窗体必主窗体必须设置置IsMDIContainer属性属性为true;l子窗体子窗体设置置MdiParent属性,指向主窗体;属性,指向主窗体;l主窗体称主窗体称为MDI父窗体,子窗体称父窗体,子窗体称为MDI子窗体;子窗体;l若要若要设置主窗体中各子窗体的排列方式,可使用主窗体的
30、置主窗体中各子窗体的排列方式,可使用主窗体的LayoutMdi方法,其方法,其值设置置为MdiLayout枚枚举值之一;之一;l例如,例如,MicrosoftWord、MicrosoftExcel等就是多文档界面等就是多文档界面(MDI)应用程序。用程序。3232系系统包含三种包含三种样式窗体:式窗体:(1)(1)单文档界面文档界面(SDI): 例如,例如,MicrosoftWindows中包括的中包括的“写字板写字板”应用程序就是用程序就是SDI类型的界面。在型的界面。在“写字板写字板”中,只能打开一个文档;打开另一个文档自中,只能打开一个文档;打开另一个文档自动关关闭一个已一个已经打开的文
31、档。打开的文档。例如,例如,MicrosoftWindows中包括的中包括的“写字板写字板”应用程序就是用程序就是SDI类型的界面。在型的界面。在“写字板写字板”中,只能打开一个文档;打开另一个文档自中,只能打开一个文档;打开另一个文档自动关关闭一个已一个已经打开的打开的文档文档。6.1.5 6.1.5 单文档窗体和多文档窗体单文档窗体和多文档窗体3333(2)多)多文档界面(文档界面(Multi-DocumentInterface,MDI)是指在一个主窗体中可以包含一个或多个子窗体的窗体,)是指在一个主窗体中可以包含一个或多个子窗体的窗体,主窗体称主窗体称为MDI父窗体,子窗体称父窗体,子窗
32、体称为MDI子窗体子窗体。l主主窗体必窗体必须设置置IsMDIContainer属性属性为true;l子子窗体窗体设置置MdiParent属性,指向主窗体;属性,指向主窗体;6.1.5 6.1.5 单文档窗体和多文档窗体单文档窗体和多文档窗体3434为了排列子窗体,用为了排列子窗体,用 LayoutMdi()LayoutMdi()方法为方法为 MDI MDI 父窗体设置父窗体设置 MdiLayout MdiLayout 枚举。其枚举值如下表所示。枚举。其枚举值如下表所示。成 员 名 称说 明ArrangeIcons所有 MDI 子图标均排列在 MDI 父窗体的工作区内Cascade所有 MDI
33、 子窗口均层叠在 MDI 父窗体的工作区内TileHorizontal所有 MDI 子窗口均水平平铺在 MDI 父窗体的工作区内TileVertical所有 MDI 子窗口均垂直平铺在 MDI 父窗体的工作区内6.1.5 6.1.5 单文档窗体和多文档窗体单文档窗体和多文档窗体3535补充例题补充例题3 3:MDIMDI窗体用法窗体用法【例例6-6-3 3】演示演示MDIMDI窗体的基本用法以及如何窗体的基本用法以及如何显示和关示和关闭子窗体运行子窗体运行效果如下(效果如下(MDIExampleMDIExample):):3636补充例题补充例题3 3:MDIMDI窗体用法窗体用法37376.
34、1.6对话框框对话框用于与用框用于与用户交互和交互和检索信息;索信息;对话框(框(ShowDialog打开的窗体)都具有返回打开的窗体)都具有返回值;lDialogResult枚枚举值:None、OK、Cancel、Yes和和No。对话框分框分为标准准对话框和自定框和自定义对话框。框。1.MessageBox对话框框利用静利用静态Show方法来方法来显示消息示消息对话框;框;2.ColorDialog、FontDialog对话框框提供提供颜色、字体色、字体选择;3.3.自定自定义窗体窗体对话框框设计方法与方法与设计一般窗体基本相同,但要做特殊的一般窗体基本相同,但要做特殊的处理。理。38381
35、、MessageBox对话框的框的Show方法方法Show(stringtext)Text给出在消息框中出在消息框中显示的文本;示的文本;Show(stringtext,stringcaption)caption指定消息框的指定消息框的标题栏中中显示的文本;示的文本;Show(stringtext,stringcaption,MessageBoxButtonsbuttons,MessageBoxIconicon)lMessageBoxButtons枚枚举值有有OK、OKCancel、YesNoCancel和和YesNo。lMessageBoxIcon枚枚举值有有None(不不显示示图标)、Ha
36、nd(手形手形)、Question(问号号)、Exclamation(感感叹号号)、Asterisk(星号星号)、Stop(停止停止)、Error(错误)、Warning(警告警告)和和Information(信息信息)。39392、ColorDialog、FontDialog对话框框提供提供颜色、字体色、字体选择的的对话框。框。l调用方法:用方法:ShowDialog() l返回返回值:DialogResult类型型举例例ColorDialogcolorDlg=newColorDialog();if(colorDlg.ShowDialog()=DialogResult.OK)textBox1
37、.ForeColor=colorDlg.Color;4040ColorDialog、FontDialog对话框框4141默认情况下,默认情况下,“字体字体”对话框显示字体、字体样式和字体对话框显示字体、字体样式和字体大小的列表框、删除线和下划线等效果的复选框、字符集的拉大小的列表框、删除线和下划线等效果的复选框、字符集的拉列表以及字体外观等选项。图标为列表以及字体外观等选项。图标为“ ”。FontDialogFontDialog组组件常用属性、方法和事件及说明如下页表所示。件常用属性、方法和事件及说明如下页表所示。6.1.6 6.1.6 对话框对话框4242属属 性性/ /方方 法法/ /事事
38、 件件说说 明明AllowScriptChange属性属性获获取取或或设设置置一一个个值值,该该值值指指示示用用户户能能否否更更改改“脚脚本本”组组合合框框中中指指定定的的字字符符集集,以以显显示示除除了了当当前前所所显显示示字字符符集以外的字符集。集以外的字符集。AllowVerticalFonts属性属性获获取取或或设设置置一一个个值值,该该值值指指示示对对话话框框是是既既显显示示垂垂直直字字体又显示水平字体,还是只显示水平字体。体又显示水平字体,还是只显示水平字体。Color属性属性获取或设置选定字体的颜色。获取或设置选定字体的颜色。Font属性属性获取或设置选定的字体。获取或设置选定的
39、字体。MaxSize属性属性获取或设置用户可选择的最大磅值。获取或设置用户可选择的最大磅值。MinSize属性属性获取或设置用户可选择的最小磅值。获取或设置用户可选择的最小磅值。6.1.6 6.1.6 对话框对话框4343ShowApplyShowApply属性属性获获取取或或设设置置一一个个值值,该该值值指指示示对对话话框框是是否否包包含含“应应用用”按按钮。钮。ShowColorShowColor属性属性获取或设置一个值,该值指示对话框是否显示颜色选项。获取或设置一个值,该值指示对话框是否显示颜色选项。ShowEffectsShowEffects属性属性获获取取或或设设置置一一个个值值,该
40、该值值指指示示对对话话框框是是否否包包含含允允许许用用户户指指定删除线、下划线和文本颜色选项的控件。定删除线、下划线和文本颜色选项的控件。ShowHelpShowHelp属性属性获获取取或或设设置置一一个个值值,该该值值指指示示对对话话框框是是否否显显示示“帮帮助助”按按钮。钮。ResetReset方法方法将所有对话框选项重置为默认值。将所有对话框选项重置为默认值。ShowDialogShowDialog方法方法运行通用对话框。运行通用对话框。ApplyApply事件事件当用户单击字体对话框中的当用户单击字体对话框中的“应用应用”按钮时发生。按钮时发生。6.1.6 6.1.6 对话框对话框44
41、446.1.6 6.1.6 对话框对话框自定自定义窗体窗体对话框框的的设计方法与方法与设计一般窗体基本相同,不同一般窗体基本相同,不同之之处是是还要要对自定自定义窗体窗体对话框作如下框作如下处理:理:u将窗体的将窗体的【FormBorderStyle】属性更改属性更改为“FixedDialog”u将窗体的将窗体的【MaximizeBox】属性、属性、【MinimizeBox】属性属性和和【ControlBox】属性属性设置置为“False”u在窗体上放一个在窗体上放一个“确定确定”按按钮,一个,一个“取消取消”按按钮。然后将。然后将窗体的窗体的【AcceptButton】属性属性设置置为“确定
42、确定”按按钮,【CancelButton】属性属性设置置为“取消取消”按按钮。u在按在按钮事件中,事件中,设置置DialogResult类型的返回型的返回值,以便,以便让对话框框隐藏起来藏起来45456.1.6 6.1.6 对话框对话框【例例6-4】自定自定义窗体窗体对话框的用法。框的用法。设计视图如下:如下:运行效果如下:运行效果如下:4646补充:窗体间值的传递补充:窗体间值的传递1、通、通过构造函数构造函数特点:特点:传值是是单向的(不可以互相向的(不可以互相传值),),实现简单。在窗体在窗体Form2中中intvalue1;stringvalue2;publicForm2(intval
43、ue1,stringvalue2)InitializeComponent();this.value1=value1;this.value2=value2;在窗体在窗体Form1中中这样调用用newForm2(111,222).Show();/这样就把就把111,222,这2个个值传送送给了了Form247472.通通过静静态变量量特点:特点:传值是双向的,是双向的,实现简单。例如:例如:比如在窗体比如在窗体Form1中中定定义一个静一个静态成成员value在在窗体窗体Form1中中这样调用用From1.value=f2;/给静静态成成员赋值newForm2().Show();/显示示Form2
44、在窗体在窗体Form2中中this.Text=From1.value;/取回取回app.value的的值From1.value=Form2;/给app.value赋值,以便其他窗体,以便其他窗体调用用补充:窗体间值的传递补充:窗体间值的传递48483.通通过窗体的公有属性窗体的公有属性值特点:特点:实现简单在窗体在窗体Form2中定中定义一个公有属性一个公有属性Form2Value,获取和取和设置置textBox1的文本的文本值publicstringForm2Valuegetreturnthis.textBox1.Text;setthis.textBox1.Text=value;在窗体在窗体
45、Form1中中这样调用用 Form2f2=newForm2();f2.Form2Value=Ok;/给Form2的的textBox1赋值Okf2.ShowDialog();补充:窗体间值的传递补充:窗体间值的传递49494.通通过窗体的公有属性窗体的公有属性值和和Owner属性属性特点:特点:实现简单,灵活灵活在窗体在窗体Form1中中publicintForm1Value=1;Form2f2=newForm2();f2.ShowDialog(this);/把把Form1作作为Form2的所有者的所有者传递给Form2在窗体在窗体Form2中中/Form2的所有者是的所有者是Form1Form
46、1f1=(Form1)this.Owner;/取到取到Form1的的值是是1MessageBox.Show(f1.Form1Value.ToString();/给Form1的的Form1Value赋值222f1.Form1Value=222;补充:窗体间值的传递补充:窗体间值的传递50505.通通过窗体的公有属性窗体的公有属性值和和Application.OpenForms属性属性说明:明:Application.OpenForms属性:属性:获取属于取属于应用程序的打用程序的打开窗体的集合。开窗体的集合。(此属性在此属性在.NETFramework2.0版中版中)publicintForm1
47、Value=1;Form2f2=newForm2();f2.Show();在窗体在窗体Form2中中stringformName=Form1;Formfr=Application.OpenFormsformName;if(fr!=null)Form1f1=(Form1)fr;/取到取到Form1的的值是是1MessageBox.Show(f1.Form1Value.ToString();/给Form1的的Form1Value赋值222f1.Form1Value=222;补充:窗体间值的传递补充:窗体间值的传递51516.通通过事件事件在窗体在窗体Form2中定中定义公有属性公有属性Form2V
48、alue,获取和取和设置置textBox1的文本的文本值并且并且还定定义一个一个accept事件事件publicstringForm2Valuegetreturnthis.textBox1.Text;setthis.textBox1.Text=value;补充:窗体间值的传递补充:窗体间值的传递52526.通通过事件(事件(续)publiceventEventHandleraccept;privatevoidbutton1_Click(objectsender,EventArgse)if(accept!=null)accept(this,EventArgs.Empty);/当窗体触当窗体触发事
49、件,事件,传递自身引用自身引用补充:窗体间值的传递补充:窗体间值的传递53536.通通过事件(事件(续)在窗体在窗体Form1中中Form2f2=newForm2();f2.accept+=newEventHandler(f2_accept);f2.Show();voidf2_accept(objectsender,EventArgse)/事件的接收者通事件的接收者通过一个一个简单的的类型型转换得到得到Form2的引用的引用Form2f2=(Form2)sender;/接收到接收到Form2的的textBox1.Textthis.textBox1.Text=f2.Form2Value;补充:窗
50、体间值的传递补充:窗体间值的传递54546.2 6.2 控件共有的基本操作控件共有的基本操作控件和控件和组件件u相同点:相同点:均指可重复使用并且可以和其他均指可重复使用并且可以和其他对象象进行交互的行交互的对象。象。u区区别:在于控件提供了用在于控件提供了用户界面功能,而界面功能,而组件不提供用件不提供用户界面。每个控件都是一个界面。每个控件都是一个组件,但只有提供用件,但只有提供用户界面功能界面功能的的组件才称件才称为控件。控件。55556.2.1 6.2.1 控件常用属性和基本操作控件常用属性和基本操作1.常用基本属性常用基本属性1)(Name):指定控件的名称,它是控件在当前:指定控件
51、的名称,它是控件在当前应用程序中的唯用程序中的唯一一标识,代,代码通通过该属性来属性来访问控件控件2)Enabled:决定控件是否可用,取:决定控件是否可用,取值为true时可用,取可用,取值为false时不可用不可用3)Anchor属性属性:保持控件与:保持控件与边框的距离不框的距离不变4)Dock属性属性:让控件始控件始终紧靠靠边框框P11556566.2.1 6.2.1 控件中常用的属性和方法控件中常用的属性和方法2.控件透明控件透明处理理将窗体中控件的背景色将窗体中控件的背景色设置置为“Transparent”,则该控件控件相相对于其父容器是透明的。于其父容器是透明的。(1)Label
52、(2)Button【例例6-5】将将图像和文字叠加在同一幅背景像和文字叠加在同一幅背景图上,上,让其看起来像是其看起来像是一幅一幅图。未设置未设置BackColorBackColor属性时的设计界面属性时的设计界面 设置设置BackColorBackColor属性后的界面效果属性后的界面效果57576.2.1 6.2.1 控件中常用的属性和方法控件中常用的属性和方法3控件的控件的对齐方式和方式和显示示顺序序(1)当控件的)当控件的【AutoSize】属性属性为“False”时,利用控件的,利用控件的【Size】属性可以精确控制控件属性可以精确控制控件(2)多个控件,可以按住)多个控件,可以按住
53、键同同时选中多个控件,然后中多个控件,然后利用利用“布局布局”快捷工具快捷工具栏中的快捷方式可以快速中的快捷方式可以快速让各控件各控件对齐。58584控件的焦点控件的焦点顺序序调整整焦点(焦点(Focus)是指当前)是指当前处于活于活动状状态的窗体或控件。的窗体或控件。 (1)利用布局工具)利用布局工具栏中的中的“键顺序序”按按钮,可以在,可以在设计界界面下面下调整焦点整焦点顺序。序。(2)如果希望在代)如果希望在代码中中让焦点在运行开始就焦点在运行开始就处于某个控件上,于某个控件上,在窗体的在窗体的Shown事件中事件中调用用Focus方法来方法来实现。textBox1.Focus();6.
54、2.1 6.2.1 控件中常用的属性和方法控件中常用的属性和方法5959Tab键顺序是在按键顺序是在按Tab键时,焦点在控件之间移动的顺序。键时,焦点在控件之间移动的顺序。p选择:窗体设计界面下,选择:窗体设计界面下,“视图视图”“Tab键顺序键顺序”查查看各控件的看各控件的TabIndex属性值属性值p可以顺序单击各控件改变其可以顺序单击各控件改变其Tab顺序顺序6.2.1 6.2.1 控件中常用的属性和方法控件中常用的属性和方法6060控件的控件的Tab键顺序决定了用序决定了用户使用使用Tab键切切换时的的顺序。默序。默认情况下情况下,控件的,控件的Tab键顺序就是控件添加到窗体的中的序就
55、是控件添加到窗体的中的顺序。序。选择“视图|Tab键顺序序”命令把窗体命令把窗体设计器切器切换到到Tab键顺序序选择模式,再次模式,再次选择该命令可以回到命令可以回到设计模式。模式。在在Tab顺序序选择模式中,可以模式中,可以单击各个控件把它各个控件把它们的的Tab键顺序序设置成置成单击控件的控件的顺序序也可以通也可以通过属性窗口属性窗口设置各个控件的置各个控件的TabIndex属性来改属性来改变Tab键顺序序位于分位于分组框中的控件的框中的控件的TabIndex也按照也按照这个个规则来修改。来修改。61616.2.2 6.2.2 控件的锚定和停靠控件的锚定和停靠1Anchor属性属性【Anc
56、hor】属性定属性定义控件的定位点位置。当控件控件的定位点位置。当控件锚定到某个窗定到某个窗体体时,如果用,如果用户调整整该窗体的大小,窗体的大小,该控件将控件将维持它与定位点持它与定位点位置之位置之间的距离不的距离不变。使用使用Anchor属性使控件的位置相属性使控件的位置相对于窗体某一于窗体某一边固定,改固定,改变窗体大小窗体大小时,控件的位置将会随之改,控件的位置将会随之改变而保持而保持这个相个相对距离距离不不变。使用属性窗口改使用属性窗口改变Anchor属性属性时,单击控件周控件周围的上下左右的上下左右的某个方框使之的某个方框使之变成深灰色,就表示控件相成深灰色,就表示控件相对于窗体于
57、窗体这条条边的距离固定的距离固定6262例如:如果一个例如:如果一个TextBox控件控件锚定于窗体的定于窗体的左、右左、右和和底底边缘,那,那么当么当用用户调整整该窗体的大小窗体的大小时,该TextBox控件将在水平方向上控件将在水平方向上自自动调整大小,以确保整大小,以确保TextBox控件与控件与该窗体右窗体右边和左和左边的距离的距离不不变。6.2.2 6.2.2 控件的锚定和停靠控件的锚定和停靠63636.2.2 6.2.2 控件的锚定和停靠控件的锚定和停靠2.Dock属性属性【Dock】属性的用途是使控件与窗体属性的用途是使控件与窗体边缘对齐,即窗体停靠在,即窗体停靠在某一某一边上。
58、此属性指定控件在窗体中的上。此属性指定控件在窗体中的驻留位置。留位置。【Dock】属性属性设置置为下列下列值:(1)Left停靠到窗体的左停靠到窗体的左侧。(2)Right 停靠到窗体的右停靠到窗体的右侧。(3)Top停靠到窗体的停靠到窗体的顶部。部。(4)Bottom停靠到窗体底部。停靠到窗体底部。(5)Fill占据窗体中的所有剩余空占据窗体中的所有剩余空间。(6)None不在任何位置停靠,它不在任何位置停靠,它显示在由示在由Location属性指定的位置。属性指定的位置。u举例例说明明64646.2.3 6.2.3 常用的鼠标事件和键盘事件常用的鼠标事件和键盘事件lWindows应用程序的
59、用程序的设计是基于事件是基于事件驱动的。的。l事件事件:是指由系是指由系统事先事先设定的、能被控件定的、能被控件识别和响和响应的的动作。作。比如比如单击鼠鼠标、按下某个、按下某个键。l事件事件驱动:事件事件驱动指程序不是完全按照代指程序不是完全按照代码文件中代文件中代码的排列的排列顺序从上序从上到下依次到下依次执行,而是根据用行,而是根据用户操作触操作触发相相应的事件来的事件来执行行对应的代的代码。l一个控件可以响一个控件可以响应多个事件多个事件,设计Windows应用程序的很多用程序的很多工作就是工作就是为各个控件各个控件编写需要的事件代写需要的事件代码。6565l但是一般只需要但是一般只需
60、要对必要的事件必要的事件编写代写代码。在程序运行。在程序运行时由控件由控件识别这些事件,然后去些事件,然后去执行相行相应的代的代码。没有。没有编写代写代码的事件的事件是不会影响任何操作的。是不会影响任何操作的。l每一每一个控件都有个控件都有对应的若干事件,不同的控件所具有的事件也的若干事件,不同的控件所具有的事件也不尽相同。不尽相同。l鼠鼠标事件和事件和键盘事件是事件是绝大多数控件都有的两大大多数控件都有的两大类事件。事件。6.2.3 6.2.3 常用的鼠标事件和键盘事件常用的鼠标事件和键盘事件66666.2.3 6.2.3 常用的鼠标事件和键盘事件常用的鼠标事件和键盘事件1.鼠鼠标事件事件u
61、Click 单击鼠鼠标左左键时触触发uMouseDoubleClick 双双击鼠鼠标左左键时触触发uMouseEnter 鼠鼠标进入控件可入控件可见区域区域时触触发uMouseMove 鼠鼠标在控件区域内移在控件区域内移动时触触发uMouseLeave 鼠鼠标离开控件可离开控件可见区域区域时触触发2.键盘事件事件uKeyDown按下按下键盘上某个上某个键时触触发uKeyUp释放放键盘上的按上的按键时触触发uKeyPress在在KeyDown之后之后KeyUp之前触之前触发,非字符,非字符键不会触不会触发该事件。事件。67676.2.3 6.2.3 常用的鼠标事件和键盘事件常用的鼠标事件和键盘事
62、件3.注意注意(1)KeyPress事件事件或鼠或鼠标事件事件处理程序没有提供理程序没有提供对应的参数,的参数,判断判断键盘输入稍微有点麻入稍微有点麻烦,所以一般在,所以一般在KeyDown事件或者事件或者KeyUp事件中事件中对用用户按按键进行行处理理 。(2)如果希望使)如果希望使键盘消息在到达窗体上的任何控件之前先被窗消息在到达窗体上的任何控件之前先被窗体接收,需要将窗体的体接收,需要将窗体的KeyPreview属性属性设置置为true。 6868KeyPressKeyPress事件和事件和KeyDownKeyDown、KeyUpKeyUp事件事件KeyPress事件事件事件参数事件参数
63、类为KeyPressEventArgs,只能捕,只能捕获单个字符,可区个字符,可区分大小写,不分大小写,不经常使用;常使用;参数参数KeyChar按下的按下的键对应的字符;的字符;KeyDown、KeyUp事件事件事件参数事件参数类为KeyEventArgs,可以,可以获取取组合按合按键,不区分大小写,用,不区分大小写,用户使用使用较为方便灵活;方便灵活;l参数参数KeyCode获取取单个按个按键的的键代代码;l参数参数KeyData获取取组合合键(Ctrl/Shift/Alt+按按键)的的键代代码;l参数参数KeyValueKeyCode的整数形式;的整数形式;l参数参数Modifiers获
64、取取Ctrl、Shift、Alt键的代的代码69696.2.3 6.2.3 常用的鼠标事件和键盘事件常用的鼠标事件和键盘事件【例例6-6】演示鼠演示鼠标和和键盘事件的触事件的触发条件,触条件,触发顺序,并序,并显示各示各个事件所个事件所传递的参数内容。的参数内容。设计界面如下:界面如下:7070补充例充例题E01:窗体与:窗体与控件控件窗体属性窗体属性l背景背景图片:片:BackgroundImage、BackgroundImageLayout;l窗体窗体边框:框:FormBorderStyle;lKeyPreview属性、属性、StartPosition属性;属性;小熊小熊图片片按按钮其他其
65、他图片片PictureBox背景背景颜色:透明色:透明设置;置;滚动文字文字Panel+Labeltimer控件控件文字文字滚动的的时间控制控制音音乐选项CheckBox7171本章综合举例本章综合举例1 1实现要点实现要点7272窗体的窗体的KeyPreviewKeyPreview属性属性如果希望使如果希望使键盘消息在到达窗体上的任何控件之前先被窗体接消息在到达窗体上的任何控件之前先被窗体接收,需要将窗体的收,需要将窗体的KeyPreview属性属性设置置为true。 当窗体和窗体上的控件同当窗体和窗体上的控件同时有有键盘事件事件时l若若KeyPreview属性属性为False,则只只执行控
66、件的行控件的键盘事件;事件;l若若KeyPreview属性属性为true,则先先执行窗体的行窗体的键盘事件事件,再,再执行控件的行控件的键盘事件;事件;举例:例:textBox1_KeyDowntextBox1_KeyDown事件中:事件中:label1.Text += textBox1;label1.Text += textBox1;Form1_KeyDownForm1_KeyDown事件中:事件中:label1.Text += label1.Text += “Form;Form;若若KeyPreviewKeyPreview属属性性=false=false,则结果果为“ “textBox1t
67、extBox1” ”;若若KeyPreviewKeyPreview属属性性=true=true,则结果果为“ “FormtextBox1FormtextBox1” ”;7373补充例充例题E01:事件(:事件(1/2)Form1_KeyDown事件事件隐藏窗体中的所有藏窗体中的所有PictureBox控件;判断按控件;判断按键显示示对应的控的控件,并播放音效,按件,并播放音效,按F1显示所有示所有隐藏的控件;藏的控件;Form1的的MouseDown、MouseMove、MouseUp事件事件自自动上移窗体、上移窗体、选中窗体移中窗体移动、定位窗体;、定位窗体;PictureBox_Mouse
68、Down事件事件l将引将引发该事件的事件的PictureBox中的中的图片片缩小至原来的小至原来的80%;l随机随机选择sounds中的某个音效;中的某个音效;PictureBox_MouseUp事件事件将引将引发该事件的事件的PictureBox中的中的图片恢复原来的大小;片恢复原来的大小;7474补充例充例题E01:事件(:事件(2/2)PictureBox5的的MouseEnter、MouseClick、MouseLeave事件事件更更换图片、播放音效、恢复片、播放音效、恢复图片;片;PictureBox13的的MouseEnter、MouseLeave事件事件改改变鼠鼠标的的显示形状;
69、示形状;Label1的的MouseEnter、MouseLeave事件事件通通过停止、启停止、启动timer计时,暂停、恢复文字的停、恢复文字的滚动;Button1_Click事件事件显示示MessageBox对话框;框;7575背景音乐播放背景音乐播放SoundPlayer类:播放:播放*.WAV格式的音格式的音乐文件;文件;SoundPlayer类的常用方法的常用方法lPlay方法:播放音方法:播放音乐文件;文件;lPlayLooping方法:循方法:循环播放音播放音乐文件;文件;lStop方法:停止播放音方法:停止播放音乐文件;文件;点点击动物物时随机声音的播放随机声音的播放lRando
70、m随机数生成器随机数生成器lProperties.Resource资源使用方法源使用方法7676补充例题补充例题4 4:“有本事就点我!有本事就点我!”运行效果(运行效果(ClickMeExample):):利用鼠利用鼠标事件事件MouseEnter实现。77776.3.1 6.3.1 分组控件(分组控件(PanelPanel、GroupBoxGroupBox)分分组控件:用于控件:用于对不同的控件不同的控件进行分行分组,为其他控件提供其他控件提供组合合容器。容器。uPanel控件控件uGroupBox控件控件不同:不同:uPanel控件不能控件不能显示示标题但可以有但可以有滚动条条u而而Gr
71、oupBox控件可控件可显示示标题,通,通过Text属性定属性定义,但不,但不能能显示示滚动条。条。u设计时当移当移动单个个GroupBox控件控件时,它包含的所有控件,它包含的所有控件将一起移将一起移动。7878GroupBoxGroupBoxn把控件添加到分把控件添加到分组框框GroupBox中的方法有两个:中的方法有两个:q直接从工具箱中拖直接从工具箱中拖动目目标控件到分控件到分组框中框中q先把需要的控件剪切到剪先把需要的控件剪切到剪贴板中,然后板中,然后选中分中分组框控件并从剪框控件并从剪贴板中复制板中复制这些控件。些控件。q也可以将它也可以将它们拖放到分拖放到分组框中。框中。7979
72、n n分组框属性分组框属性分组框属性分组框属性qText属性,为分组框设置标题属性,为分组框设置标题qBackColor属性,设置分组框背景颜色属性,设置分组框背景颜色qBackgroundImage属性,设置分组框背景图像属性,设置分组框背景图像qTabStop属性,分组框一般不接收焦点,它将焦点传递给其包含控属性,分组框一般不接收焦点,它将焦点传递给其包含控件中的第一个项;可以设置这个属性来指示分组框是否接收焦点。件中的第一个项;可以设置这个属性来指示分组框是否接收焦点。qAutoSize属性,设置分组框是否可以根据其内容调整大小。属性,设置分组框是否可以根据其内容调整大小。qAutoSi
73、zeMode属性,获取或设置启用属性,获取或设置启用AutoSize属性时属性时分组框的行分组框的行为方式。为方式。n属性值为属性值为AutoSizeMode枚举值:枚举值:GrowAndShrink,根据内容增,根据内容增大或缩小;大或缩小;GrowOnly(默认),可以根据其内容任意增大,但不(默认),可以根据其内容任意增大,但不会缩小至小于它的会缩小至小于它的Size属性值属性值。qControls属性,分组框中包含的控件的集合。可以使用这个属性的属性,分组框中包含的控件的集合。可以使用这个属性的Add,Clear等方法。等方法。P117GroupBoxGroupBox8080分分组组框
74、控件框控件 GroupBoxGroupBoxn n分组框事件分组框事件分组框事件分组框事件lAutoSizeChangedAutoSizeChanged事件,在事件,在AutoSizeAutoSize属性发生改变时触属性发生改变时触发。发。lClickClick和和DoubleClickDoubleClick事件。事件。lTabStopChangedTabStopChanged事件,在事件,在TabStopsTabStops属性改变时触发。属性改变时触发。lKeyUp/KeyPress/KeyDowmKeyUp/KeyPress/KeyDowm事件,当分组框拥有焦点同事件,当分组框拥有焦点同时
75、用户松开时用户松开/ /按下某个键时触发。按下某个键时触发。8181 面板控件面板控件 PanelPaneln如下情况下如下情况下经常使用面板控件常使用面板控件q子控件要以可子控件要以可见的方式分开的方式分开q提供不同的提供不同的BackColor属性属性q使用使用滚动条以允条以允许多个控件放置在同一个有限空多个控件放置在同一个有限空间。n面板属性面板属性q类似似GroupBox的属性的属性qAutoScroll属性,属性,设置面板置面板滚动条是否可用,默条是否可用,默认情况情况下是禁用下是禁用falseqBorderStyle属性,属性,设置面板置面板边框框风格,有格,有None(默(默认)
76、,),FixedSingle,Fixed3D三种。三种。qBackColor、BackgroundImage属性属性82826.3.2 6.3.2 工具提示组件(工具提示组件(ToolTipToolTip)ToolTip组件用于在用件用于在用户指向控件指向控件时显示相示相应的提示信息。工的提示信息。工具提示会具提示会弹出一个出一个长方形的小窗口,方形的小窗口,该窗口在用窗口在用户将指将指针悬停停在一个控件上在一个控件上时显示有关示有关该控件用途的控件用途的简短短说明。明。该组件可与件可与任何控件关任何控件关联。u属性窗口中属性窗口中设置提示信息置提示信息u在代在代码中利用中利用ToolTip组
77、件的件的SetToolTip方法直接方法直接设置其他置其他控件的操作提示信息。控件的操作提示信息。 u如果将一个如果将一个ToolTip控件置于窗体上,控件置于窗体上,则该控件可以控件可以为多个多个控件所用。控件所用。8383属性或方法 说明ActiveActive获取或设置一个值,指示工具提示当前是否处于激活状态。如果工具提示当前处于活动状态,则为true;否则为false。默认为true。可为一个窗体创建并分配多 个 ToolTip组 件 , 但 将 Active属 性 设 置 为false只影响当前ToolTip。AutomaticDelAutomaticDelayay获取或设置工具提示
78、的自动延迟。自动延迟(以毫秒为单位)。默认值为500。AutoPopDelayAutoPopDelay获取或设置当指针在具有指定工具提示文本的控件内保持静止时,工具提示保持可见的时间期限。以毫秒为单位,默认值为5000。ReshowDelaReshowDelay y获取或设置鼠标指针从一个控件移到另一控件时,必须经过多长时间才会出现后面的工具提示窗口。以毫秒为单位。ShowAlwaysShowAlways获取或设置一个值,该值指示是否显示工具提示窗口,甚至是在其父控件不活动的时候。如果始终显示工具提示,则为true;否则为false。默认为false。BackColorBackColor获取或
79、设置工具提示的背景色6.3.2 6.3.2 工具提示组件(工具提示组件(ToolTipToolTip)8484ForeColor获获取取或或设设置置工工具具提提示示的的前前景景色色。使使用用BackColor和和ForeColor属属性性可可修修改改工工具具提提示示所所使使用用的的配配色色方方案案。系系统统默默认认字字体体是是自自动动使用的,并且只能通过自行绘制工具提示来重写。使用的,并且只能通过自行绘制工具提示来重写。IsBalloon获取或设置一个指示工具提示是否应使用气球状窗口的值。如获取或设置一个指示工具提示是否应使用气球状窗口的值。如果应使用气球状窗口,则为果应使用气球状窗口,则为t
80、rue;如果应使用标准矩形窗口,;如果应使用标准矩形窗口,则为则为false。默认为。默认为false。6.3.2 6.3.2 工具提示组件(工具提示组件(ToolTipToolTip)8585lSetToolTip方法,它使工具提示文本与指定的控件相关方法,它使工具提示文本与指定的控件相关联。其声明如下:。其声明如下:publicvoidSetToolTip(Controlcontrol,stringcaption)其中,参数其中,参数 control是要将工具提示文本与其关是要将工具提示文本与其关联的控件;的控件;caption是指是指针位于控件上方位于控件上方时要要显示的工具提示文本。示
81、的工具提示文本。l如果想窗体中添加一个如果想窗体中添加一个ToolTip组件,件,则该窗体上的其他控件会窗体上的其他控件会自自动在属性窗口中添加一个在属性窗口中添加一个toolTip1上的上的ToolTip属性,可以属性,可以通通过该属性属性设置各个控件的操作信息。置各个控件的操作信息。6.3.2 6.3.2 工具提示组件(工具提示组件(ToolTipToolTip)86866.3.3 6.3.3 错误提示组件(错误提示组件(ErrorProviderErrorProvider)ErrorProvider组件可以件可以对窗体或控件上的用窗体或控件上的用户输入入进行行验证。同同时它也是典型的关它
82、也是典型的关联型(型(绑定)的定)的验证控件,用以控件,用以验证并并显示控件关示控件关联的数据源如的数据源如DataSet中存在的中存在的错误。用用MessageBox消息框,一旦用消息框,一旦用户关关闭了消息框,就再也看了消息框,就再也看不不见错误信息。用信息。用户可能无法可能无法记忆所有的所有的错误内容因而也就无内容因而也就无法方便的法方便的纠正所有正所有错误从而要多次从而要多次弹出出错误消息框。消息框。8787ErrorProvider会会记录所有的所有的错误并能并能够准确定位在准确定位在错误发生的生的窗体或控件上,窗体或控件上,显示一个示一个红色色图标,当鼠当鼠标悬停在停在该图标上方上
83、方时还能能够自自动弹出出ToolTip提示以提示以显示示错误内容。内容。这样操作人操作人员可以根据可以根据错误发生的位置以及具体内容生的位置以及具体内容从容的修改从容的修改错误,直到,直到这些小些小图标全部消失。全部消失。6.3.3 6.3.3 错误提示组件(错误提示组件(ErrorProviderErrorProvider)8888ErrorProviderErrorProvider属性属性属性或方法属性或方法说明说明DataSourceDataSource通常与ContainerControl相关,也就是控件绑定的数据内容,可 以 是 DataTable, DataSet或 者 自 定 义
84、 的 实 体 等 。ErrorProvider会根据DataSource的结构进行其内部的数据验证,当然验证的规则需要开发人员定义。ContainerCContainerControlontrol正如其名字所言,正是ErrorProvider所依存的容器,通过为其设置适当的容器,通常是Windows窗体,就是为了Errorprovider能够在窗体上的适当位置显示错误图标。(ErrorProvider 是一个组件,凡是组件都具备相应的特征,其中很重要的一点就是容器的概念)IconIcon允许用户自定义图标。如果你对默认的这个小红圆圈不满意的话,没关系,你可以通过该属性用你自己的图标替换。898
85、9ErrorProvider常常规用法用法ErrorProvider的一种最的一种最简单使用方法就是当用使用方法就是当用户向某控件向某控件比如比如TextBox中中输入无效数据入无效数据时显示示错误提示,提示,这种情况下甚至种情况下甚至不需要不需要设置置 DataSource,只需要,只需要设置置ContainerControl属性属性值为当前当前Form并使用并使用SetError方法方法进行行简单编码即可,如下所示。要提示即可,如下所示。要提示错误信息,必信息,必须在使用在使用TextBox的的Text时才会出才会出现错误信息。信息。【例例】单击textbox1的的Validating事件
86、,并将代事件,并将代码改改为如下内容如下内容6.3.3 6.3.3 错误提示组件(错误提示组件(ErrorProviderErrorProvider)9090protectedvoidtextBox1_Validating(objectsender,System.ComponentModel.CancelEventArgse)tryintx=Int32.Parse(textBox1.Text);errorProvider1.SetError(textBox1,);catch(Exceptione)errorProvider1.SetError(textBox1,Notanintegervalu
87、e.);6.3.3 6.3.3 错误提示组件(错误提示组件(ErrorProviderErrorProvider)91916.3.4 6.3.4 定时组件(定时组件(TimerTimer)4、Timer组件:件:功能:主要用于功能:主要用于设置某个置某个时间间隔,并在每次到达隔,并在每次到达设置的置的时间间隔隔时,触,触发指定的事件。指定的事件。该组件常用的属性是件常用的属性是【Enabled】属性和属性和【Interval】属性。属性。u【Enabled】属性属性表示是否启用表示是否启用计时,这是一个是一个bool类型型的属性,的属性,false表示停止表示停止计时,true表示开始表示开始
88、计时;同;同时,该组件件还提供了提供了Start方法和方法和Stop方法,其作用与方法,其作用与设置置【Enabled】属性的作用相同。属性的作用相同。u【Interval】属性属性表示触表示触发Tick事件的事件的间隔隔时间,以,以ms为计时单位,默位,默认为100ms。92926.3.4 6.3.4 定时组件(定时组件(TimerTimer)4、Timer组件(件(续):):【例例6-7】利用利用Timer组件和件和Label控件,在窗体上方控件,在窗体上方显示示类似似电影影字幕的不停向上字幕的不停向上滚动的文本,并在窗体下方的文本,并在窗体下方显示一个示一个简单的的时钟信息。信息。左左图
89、为设计界面,右界面,右图为运行效果。运行效果。9393补充例题补充例题5 5:变换颜色和位置的文字:变换颜色和位置的文字演示效果如下(演示效果如下(TextChangeExample):):文字会从左到右不停的移文字会从左到右不停的移动,并且,并且颜色在随机色在随机变换。9494补充例题补充例题5 5实现要点实现要点控件位置控件位置变换lLeft、ToplBottom、Right文本文本颜色随机色随机变换l随机数生成器随机数生成器RandomlColor.FromArgb方法生成方法生成颜色色进一步思考(留一步思考(留给学生自己完成):学生自己完成):l文本的位置文本的位置变换方向:从右到左、
90、从上到下、从下到上、方向:从右到左、从上到下、从下到上、按某种曲按某种曲线变换?如果是其他控件呢?如果是其他控件呢?l如果窗体的前景色、背景色如果窗体的前景色、背景色变换如何如何实现?9595补充例题补充例题6 6:打飞鸟游戏:打飞鸟游戏运行效果如下:运行效果如下:9696补充例题补充例题6 6实现要点实现要点飞鸟的的显示示飞鸟的移的移动l初始位置初始位置l变换位置位置飞鸟被点被点击时消失消失进一步思考(功能一步思考(功能扩展留展留给学生完成)学生完成)l统计一段一段时间内内击中中飞鸟的个数?的个数?l记录玩游玩游戏玩家的名称和当前的成玩家的名称和当前的成绩及排行榜。及排行榜。97976.4.
91、1 6.4.1 标签控件(标签控件(LabelLabel、LinkLabelLinkLabel)标签类控件(控件(Label、LinkLabel)操作控件包括:)操作控件包括:1、Label:用于提供控件或窗体的描述性文字,以便用于提供控件或窗体的描述性文字,以便为用用户提提供相供相应的信息。的信息。常用属性:常用属性:Text属性表示属性表示显示的文本内容。示的文本内容。2、LinkLabel:与与Label控件的作用非常相似,不同的是控件的作用非常相似,不同的是LinkLabel控件以控件以超超链接的形式接的形式显示文本信息。示文本信息。当用当用户单击LinkLabel控件控件时,会触,会
92、触发LinkClicked事件。可事件。可以在以在LinkClicked事件中事件中编写代写代码让其其链接到指定的网接到指定的网页。常用属性:常用属性:Text属性、属性、LinkArea属性、属性、LinkData属性属性 9898链接接标签属性:属性:为不同状不同状态下的下的链接文本定接文本定义颜色的属性色的属性lActiveLinkColor,用于指定,用于指定链接在被接在被单击的的过程中的程中的颜色,色,默默认为Red。lDisabledLinkColor,用于指定,用于指定链接被禁用接被禁用时的的颜色,把控件色,把控件的的Enabled属性属性设置置为false即可禁用即可禁用链接接
93、lLinkColor,用于指定,用于指定链接在普通状接在普通状态下(被点下(被点击或或访问前)前)的的颜色,默色,默认为Blue。lVisitedLinkColor,用于指定,用于指定访问过的的链接的接的颜色,色,访问过的的链接通接通过LinkVisited属性指定,默属性指定,默认为Purple。lLinkArea属性属性,默,默认情况下,情况下,链接接标签的的Text属性中的内容都被当属性中的内容都被当作超作超级链接,整个控件是可接,整个控件是可单击的。可以通的。可以通过LinkArea属性来定属性来定义Text中的部分内容中的部分内容为超超链接,使用接,使用LinkArea类来来设置。置
94、。9999一个使用一个使用LinkArea的例子的例子:如果需要把如果需要把“测试链接效果接效果”中的中的“链接接”两个字两个字显示示为超超级链接。接。则示例代示例代码如下如下:linkLabel1.LinkArea=newLinkArea(2,2);LinkBehavior属性,指定属性,指定链接的外接的外观。其。其值必必须为枚枚举类型型LinkBehavior的的值:nAlwaysUnderline:可点:可点击部分部分总有下划有下划线nHoverUnderline:可点:可点击部分在鼠部分在鼠标指指针停留到控件停留到控件上上时显示下划示下划线nNeverUnderline:没有下划:没有
95、下划线100100LinkClicked事件事件:当用当用户单击控件中的控件中的链接接时,处理理LinkClicked事件以事件以执行任行任务,将将LinkLabelLinkClickedEventArgs类的的实例例传递给LinkClicked事事件的件的处理程序,理程序,该实例包含与所例包含与所单击的的链接关接关联的的 LinkLabel.Link对象。象。可以使用在可以使用在LinkLabel.Link类的的LinkData属性中指定的信息属性中指定的信息确定确定单击了哪个了哪个链接或接或单击该链接后要接后要执行的任行的任务类型。型。privatevoidlbllink_LinkClic
96、ked(objectsender,LinkLabelLinkClickedEventArgse)System.Diagnostics.Process.Start(iexplore.exe,http:/);101101privatevoidlbllink_LinkClicked(objectsender,System.Windows.Forms.LinkLabelLinkClickedEventArgse)this.linkLabel1.Links0.LinkData=http:/;Process.Start(IExplore.exe,e.Link.LinkData.ToString();Pro
97、cess.Start方法将打开方法将打开浏览器器浏览指定的指定的URL1021026.4.2 6.4.2 文本控件文本控件1.文本框文本框(TextBox)控件控件常用的基本属性常用的基本属性1)Text:表示文本框中:表示文本框中显示的内容。示的内容。2)MaxLength:表示用:表示用户可以在文本框控件中最多可以在文本框控件中最多键入的字符数入的字符数,默,默认值为32767个字符。注意,由于使用的是个字符。注意,由于使用的是Unicode字符,字符,所以所以对中文和英文的字符中文和英文的字符计数方法是相同的,即一个英文字符的数方法是相同的,即一个英文字符的长度度为1,一个,一个汉字字符
98、的字字符的长度也是度也是1。3)Multiline:表示是否可以包含多行内容。:表示是否可以包含多行内容。4)PasswordChar:用于指定在屏蔽:用于指定在屏蔽TextBox控件中控件中输入的密入的密码字字符符时所要使用的符号。所要使用的符号。2.TextBox控件常用的基本事件控件常用的基本事件TextChanged:表示文本框中的当前内容(:表示文本框中的当前内容(Text属性属性值)更改)更改时触触发的操作。的操作。1031036.4.2 6.4.2 文本操作类控件文本操作类控件【例例6-8】演示演示TextBox控件、控件、ToolTip组件和件和ErrorProvider组件件
99、的用法。的用法。设计界面如下:界面如下:1041046.4.2 6.4.2 文本操作类控件文本操作类控件2.MaskedTextBox:掩:掩码文本框文本框主要作用主要作用控制控制输入文本的格式。如果入文本的格式。如果输入的内容不入的内容不满足足规定的格式,定的格式,则拒拒绝用用户输入。入。常用属性常用属性【Mask】属性,用于属性,用于设置当前掩置当前掩码文本框文本框输入字符的格式。入字符的格式。1051056.4.2 6.4.2 文本操作类控件文本操作类控件3.RichTextBox:主要功能是主要功能是进行高行高级文本文本输入和入和编辑,作,作为一般的文本一般的文本输入入,其属性、事件与
100、,其属性、事件与TextBox控件的属性、事件大致相同。控件的属性、事件大致相同。它可以完成与它可以完成与MicrosoftWord相似的复相似的复杂文字文字处理功能,比如改理功能,比如改变文本、段落的文本、段落的显示格式,在文本中示格式,在文本中查找特定字符和字符串等,可以保存找特定字符和字符串等,可以保存图像像内容。内容。 常用属性常用属性(1)SelectionFont表示当前表示当前选中文本或所要中文本或所要输入文本的字体、大小、效果等入文本的字体、大小、效果等(2)SelectionColor表示当前表示当前选中文本或所要中文本或所要输入文本的入文本的颜色色1061066.5.1 6
101、.5.1 列表控件(列表控件(ListBoxListBox、ComboBoxComboBox)1、列表、列表类控件(控件(ListBox控件、控件、ComboBox控件)控件)(1)ListBox(列表框)控件和(列表框)控件和ComboBox(下拉框)控件均(下拉框)控件均用于用于显示一示一组条目,以便操作者从中条目,以便操作者从中选择一条或者多条信息一条或者多条信息,并,并对其其进行相行相应的的处理。理。(2)常用的属性和方法)常用的属性和方法uItemsuSelectedIndex、SelectedItemuSelectedItemsuCountuItems.AdduItems.AddR
102、angeuItems.Remove、Items.RemoveAtuItems.Clear1071076.5.1 6.5.1 列表控件(列表控件(ListBoxListBox、ComboBoxComboBox)1ListBox控件的其他属性控件的其他属性MutiColumn属性属性:决定是否可以以多列的形式:决定是否可以以多列的形式显示各示各项。SelectionMode属性属性:选择列表列表项的方式。的方式。uNone:不能:不能选择任何条目;任何条目;uOne:每次只能:每次只能选择一个条目;一个条目;uMultiSimple:每次可以:每次可以选择一个条目或者多个条目,一个条目或者多个条目
103、,单击对应条目即被条目即被选中,再次中,再次单击取消取消选中;中;uMultiExtended:每次可以:每次可以选择一个条目或者多个条目一个条目或者多个条目,仅用鼠用鼠标单击各条目各条目时,每次,每次选择一个条目;使用一个条目;使用组合合键(如(如或或键)配合)配合时,可以,可以选择多个条多个条目。目。HorizontalScrollbar属性属性:获取或取或设置一个置一个值(true或者或者false),),该值指示是否在控件中指示是否在控件中显示水平示水平滚动条。条。1081086.5.1 6.5.1 列表控件(列表控件(ListBoxListBox、ComboBoxComboBox)2
104、、ComboBox控件的其他属性控件的其他属性ComboBox控件是控件是TextBox和和ListBox组合出来的合出来的结果。果。该控件包含了两个部分:控件包含了两个部分:顶部是一个允部是一个允许用用户键入列表入列表项的的文本框(文本框(TextBox)和文本框右)和文本框右边带有向下箭有向下箭头的按的按钮组合合出来的出来的结果果 DropDownStyle属性属性:表示:表示组合框的合框的显示示样式,它有式,它有3种种选择形式。形式。Simple:同:同时显示文本框和列表框,文本框可以被示文本框和列表框,文本框可以被编辑。DropDown:只:只显示文本框,示文本框,隐藏列表框,且文本框
105、可以藏列表框,且文本框可以被被编辑。DropDownList:只:只显示文本框,示文本框,隐藏列表框,但文本框藏列表框,但文本框不可以被不可以被编辑。MaxDropDownItems属性属性:设置打开列表框置打开列表框时所所显示的最示的最大条目数。大条目数。1091096.5.1 6.5.1 列表控件(列表控件(ListBoxListBox、ComboBoxComboBox)【例例6-9】设计一个一个简单的的选修修课程修改界面,从可程修改界面,从可选项中中选择课程程添加到添加到选修的修的课程列表内。如果可程列表内。如果可选项中没有提供所中没有提供所选课程程,允,允许用用户直接直接键入新入新课程
106、,并自程,并自动将将键入的新入的新课程添加到程添加到供供选择的的课程中。程中。设计界面如下:界面如下:1101106.5.2 6.5.2 复选框控件复选框控件1.CheckBox控件控件(1).三种状三种状态(2).常用属性常用属性Checked属性:属性:true,falseCheckState属性属性 :Checked、Unchecked和和IndeterminateThreeState属性属性 Text属性属性 (3).常用事件常用事件CheckedChanged事件事件1111116.5.2 6.5.2 复选框控件复选框控件1.CheckBox控件控件【例例6-10】设计一个窗体,一个
107、窗体,让用用户选择球球类参参赛项目,要求用一目,要求用一个复个复选框表示是否参加所有比框表示是否参加所有比赛项目,如果只参加了部分球目,如果只参加了部分球赛项目,目,该复复选框用框用“不确定不确定”状状态表示。表示。设计界面如下:界面如下:1121126.5.2 6.5.2 复选框控件复选框控件2CheckedListBox控件控件适用适用场合:合:当窗体中所需的复当窗体中所需的复选框框选项较多多时,或者需要在运行,或者需要在运行时动态地决定有哪些地决定有哪些选项时,使用此控件比,使用此控件比较方便。方便。常用属性、方法常用属性、方法(1)Items属性属性:项的集合。的集合。(2)Count
108、属性属性:项的数目。的数目。(3)CheckedItems属性属性:获取取选中中项的集合。的集合。(4)CheckedIndices属性属性:获取取选中中项索引的集合。索引的集合。(4)MultiColumn属性:属性:true或或false。(5)GetItemChecked方法方法:获取指定取指定项是否被是否被选中中 。(6)SetItemChecked方法方法:设置某个复置某个复选框的框的选中状中状态。1131136.5.2 6.5.2 复选框控件复选框控件2CheckedListBox控件控件【例例6-11】设计一个一个简单的的课程程选择界面,演示界面,演示CheckedListBox
109、控控件的用法。件的用法。左左图为设计界面,右界面,右图为运行效果。运行效果。114114补充例题:补充例题:CheckedListBoxCheckedListBox用法用法运行效果如下:运行效果如下:1151156.5.6.5.3 3 RadioButton RadioButton控件控件1.特点:特点:(1)单选(2)以以各自所在的容器各自所在的容器来划分来划分组,如果在一个窗体上,如果在一个窗体上创建多建多个个单选按按钮组,可以使用,可以使用GroupBox或者或者Panel控件作控件作为容容器。器。2.与与CheckBox相比,相比,RadioButton控件除了是控件除了是单选外,其他
110、外,其他用法与用法与CheckBox用法相同。用法相同。1161166.5.6.5.3 3 RadioButton RadioButton控件控件【例例6-12】演示演示RadioButton控件的用法。控件的用法。设计界面如下:界面如下:1171176.5.4 6.5.4 日期选择控件日期选择控件1.DateTimePicker控件控件用于用于对日期(年月日)和日期(年月日)和时间(时分秒)分秒)进行行处理,理,该控件提供一个可控件提供一个可选择的日期范的日期范围,供用,供用户选择/编辑日期或日期或时间。2.常用属性常用属性1)Text属性属性2)Value属性属性3)Format属性属性4
111、)ShowUpDown属性:如果希望利用属性:如果希望利用该控件控件仅让用用户编辑时间(时分秒),需要将它的分秒),需要将它的【ShowUpDown】属性属性设置置为“True”,并将其,并将其【Format】属性属性设置置为“Time”。5)CustomFormat属性:指定日期属性:指定日期时间格式字符串格式字符串 1181186.5.4 6.5.4 日期选择控件日期选择控件【例例6-13】演示演示DateTimePicker控件的用法。控件的用法。设计界面如下:设计界面如下:运行界面如下:运行界面如下:1191196.6 6.6 图像操作类控件图像操作类控件1.PictureBox控件控
112、件功能:功能:PictureBox控件用于控件用于显示示图像或者像或者GIF动画画。常用属性常用属性1)Image:获取或取或设置置显示的示的图像像2)SizeMode:AutoSize:自:自动调整控件整控件PictureBox的大小的大小为所包含的所包含的图片大小。片大小。CenterImage:将控件的中心和:将控件的中心和图片的中心片的中心对齐显示。如果控件比示。如果控件比图片大,片大,则图片将居中片将居中显示;如示;如图片大,片大,则图片将居中,外片将居中,外边缘将被裁。将被裁。Normal:图片被置于控件的左上角。如果片被置于控件的左上角。如果图片大,片大,则超出部分被剪裁。超出部
113、分被剪裁。StretchImage:控件中的:控件中的图像被拉伸或收像被拉伸或收缩,完全占,完全占满控件。控件。Zoom:控件中的:控件中的图片按照比例拉伸或收片按照比例拉伸或收缩,占,占满控件的控件的长度或高度。度或高度。 3)Parent:(仅代代码方式下可用):方式下可用):获取或取或设置父置父级控件控件1201206.6 6.6 图像操作类控件图像操作类控件1.PictureBox控件(控件(续)/加加载if(pictureBox1.Image!=null)pictureBox1.Image.Dispose();/及及时释放放资源源stringfileName=Application.
114、StartupPath+MyImage.gif;pictureBox1.Image=Image.FromFile(fileName);/清除清除图片片if(pictureBox1.Image!=null)pictureBox1.Image.Dispose();/及及时释放放资源源pictureBox1.Image=null;1211216.6 6.6 图像操作类控件图像操作类控件1.PictureBox控件(控件(续)【例例6-14】演示如何将演示如何将图像拖放到像拖放到RichTextBox控件内。控件内。 设计界面设计界面 运行界面运行界面122122补充例题:豹子奔跑补充例题:豹子奔跑运
115、行效果如下运行效果如下图所示(所示(PictureBoxExample):):注意:注意:图片在程序中的片在程序中的访问方法方法123123补充例题:图片变换效果补充例题:图片变换效果运行效果如运行效果如图所示(所示(VistaPictureBoxExample):):1241246.6.2 6.6.2 图像列表组件(图像列表组件(ImageListImageList)2.ImageList控件:控件:图像列表控件。像列表控件。功能:功能:ImageList组件用于保存一件用于保存一组图像,然后供其他控件像,然后供其他控件显示一示一组图像中的某一个像中的某一个图像,例如像,例如ListView
116、控件、控件、TreeView控件等。控件等。常用属性:常用属性:【Images】属性属性:包含关:包含关联的控件将要使用的的控件将要使用的图片。片。 【ImageIndex】属性属性:每个:每个单独的独的图像可通像可通过其索引其索引值或或其其键值来来访问【ImageKey】属性:属性:键值1251256.6 6.6 图像操作类控件图像操作类控件2.ImageList控件:控件:图像列表控件。像列表控件。【例例6-15】演示如何利用演示如何利用ImageList组件件动态改改变按按钮图像的像的状状态。运行效果如下:。运行效果如下:1261266.7.1 6.7.1 菜单控件(菜单控件(MenuS
117、tripMenuStrip)MenuStrip控件用于控件用于设计菜菜单。菜。菜单的的组成:成:1271276.7.1 MenuStrip6.7.1 MenuStrip控件控件MenuStrip控件的常用属性控件的常用属性(1)Dock:指示菜:指示菜单栏在窗体中停靠的位置,默在窗体中停靠的位置,默认值为Top。(2)Items:菜:菜单栏上上显示的各菜示的各菜单项。MenuItem菜菜单项的常用属性的常用属性(1)DisplayStyle:菜:菜单项上的上的显示示样式。式。(2)Image:指定在:指定在该菜菜单项上上显示的示的图标。(在在C:ProgramFilesMicrosoftVis
118、ualStudio8Common7VS2005ImageLibrary下有一个下有一个.zip文件,内有各种文件,内有各种动画文件、画文件、图像像文件和文件和图标文件,例如展开后在目文件,例如展开后在目录bitmapscommandspngformat下有打开、下有打开、保存等保存等图像。)像。)(3)ShortcutKeys:快捷:快捷键。MenuItem菜菜单项的常用事件的常用事件Click事件事件1281286.7.2 ContextMenuStrip6.7.2 ContextMenuStrip控件控件用于制作右用于制作右键快捷菜快捷菜单使用使用该控件的关控件的关键是将需要是将需要显示快
119、捷菜示快捷菜单的控件的的控件的ContextMenuStrip属性属性设置置为添加的添加的ContextMenuStrip控件控件对象。象。除了是右除了是右键弹出外,其他用法与出外,其他用法与MenuStrip相同。相同。1291296.7.3 ToolStrip6.7.3 ToolStrip控件控件1.ToolStrip控件的作用是控件的作用是为Windows应用程序添加工具用程序添加工具栏。工具工具栏一般是由多个按一般是由多个按钮、标签等排列等排列组成,通成,通过这些些项可以快速地可以快速地执行程序提供的一些常用命令,比使用菜行程序提供的一些常用命令,比使用菜单选择更加方便快捷。更加方便快
120、捷。 2.ToolStrip控件的常用属性和事件与控件的常用属性和事件与MenuStrip控件基本相控件基本相同,各同,各项的属性和事件与的属性和事件与MenuStrip控件中菜控件中菜单项基本相基本相同。同。1301306.7.4 StatusStrip6.7.4 StatusStripStatusStrip控件的作用是向窗体中添加状控件的作用是向窗体中添加状态栏,状,状态栏一一般由文本提示信息般由文本提示信息组成。成。StatusStrip控件一般由控件一般由ToolStripStatusLabel对象象组成,成,每个每个这样的的对象都可以象都可以显示文本、示文本、图标或者同或者同时显示文
121、本和示文本和图像。像。1311316.7.4 StatusStrip6.7.4 StatusStrip【例例6-16】演示菜演示菜单与工具与工具栏相关控件的用法。相关控件的用法。设计界面设计界面 运行界面运行界面1321326.8.1 6.8.1 列表视图控件(列表视图控件(ListViewListView)ListView(列表(列表视图)控件用列表的形式)控件用列表的形式显示一示一组数据,数据,每每项数据都是一个数据都是一个ListItem类型的型的对象,称之象,称之为项,同,同时每每个个项还可能会有多个描述的子可能会有多个描述的子项。一般使用一般使用ListView来来显示分示分类查询及
122、其及其详细信息。信息。常用属性:常用属性:MultiSelect属性属性Sorting属性属性Items属性属性View属性属性 ImageIndex属性属性 1331336.8.1 6.8.1 列表视图控件(列表视图控件(ListViewListView)【例例6-17】演示演示ListView控件的用法。控件的用法。设计界面设计界面 运行界面运行界面1341346.8.2 6.8.2 树形视图控件(树形视图控件(TreeViewTreeView)常用属性常用属性uNodes:TreeView控件的控件的节点集合点集合uSelectedNode:当前:当前选定的定的树节点点uImageInd
123、ex:获取或取或设置默置默认的的图像列表的索引像列表的索引值uSelectedImageIndex:节点点选定定时显示的示的图像列表的索像列表的索引引值uCheckBoxes:显示在示在节点旁点旁边带有复有复选框的框的树视图。uImageList属性属性:指定各指定各节点可以使用的点可以使用的图标集合集合 1351356.8.2 6.8.2 树形视图控件(树形视图控件(TreeViewTreeView)(1)设置置TreeView控件的控件的ImageList属性属性为想要使用的想要使用的现有有ImageList控件。例如:控件。例如:treeView1.ImageList=imageList
124、1;(2)设置置节点的点的ImageIndex和和SelectedImageIndex属性。属性。ImageIndex属性确定正常和展开状属性确定正常和展开状态下的下的节点点显示的示的图像,像,SelectedImageIndex属性确定属性确定选定状定状态下的下的节点点显示的示的图像。像。例如:例如:treeView1.SelectedNode.ImageIndex=0;treeView1.SelectedNode.SelectedImageIndex=1;1361366.8.2 6.8.2 树形视图控件(树形视图控件(TreeViewTreeView)【例例6-18】演示演示TreeVie
125、w控件的用法。控件的用法。设计界面如下:界面如下:1371376.9.1 6.9.1 选项卡控件(选项卡控件(TabControlTabControl)功能:功能:TabControl控件用于控件用于创建建带有多个有多个选项卡(卡(TabPages)的窗口,每个)的窗口,每个选项卡都相当于一个卡都相当于一个对话窗口容器,可以在窗口容器,可以在其中独立地存放其他控件其中独立地存放其他控件对象。象。常用属性:常用属性:uImageList属性:属性:获取或取或设置当前置当前TabControl控件中的各控件中的各个个标签页使用的使用的图标集合。集合。uMultiLine属性:属性:获取或取或设置是
126、否可以置是否可以创建多行建多行选项卡。卡。uTabPages属性:属性:获取取该选项卡控件中卡控件中选项卡卡页的集合。的集合。1381386.9.1 6.9.1 选项卡控件(选项卡控件(TabControlTabControl)【例例6-19】演示演示TabControl控件的用法。控件的用法。设计界面设计界面 运行界面运行界面1391396.9.2 6.9.2 面板复合控件面板复合控件功能:功能:(1)SplitContainer控件是由两个控件是由两个Panel面板和一个面板和一个Split拆分条拆分条组成的复合体,两个成的复合体,两个Panel之之间的拆分条可以拖的拆分条可以拖动。(2)
127、多个)多个SplitContainer控件可嵌套控件可嵌套1401406.9.2 6.9.2 面板复合控件面板复合控件【例例6-20】演示演示SplitContainer控件的基本用法。控件的基本用法。运行效果如下:运行效果如下:141141补充例题:补充例题:XPXP风格的风格的WindowsWindows窗体窗体运行效果如下运行效果如下图所示(所示(SplitContainerExample):):1421426.9.3 6.9.3 任务栏图标组件(任务栏图标组件(NotifyIconNotifyIcon)功能功能:NotifyIcon组件主要用于件主要用于显示通知区域中的示通知区域中的图
128、标。NotifyIcon是一个比是一个比较特殊的特殊的组件,只有运行件,只有运行时才能才能显示。示。常用属性:常用属性:【Icon】属性属性设置出置出现在状在状态区域的区域的图标。【Visible】属性控制是否属性控制是否让图标显示出来。示出来。【Text】属性来指定将鼠属性来指定将鼠标指指针放置在放置在图标上上时显示的提示示的提示信息。信息。1431436.9.3 6.9.3 任务栏图标组件(任务栏图标组件(NotifyIconNotifyIcon)【例例6-21】演示演示NotifyIcon控件的基本用法。控件的基本用法。运行效果:运行效果:设计效果:设计效果:144144本章习题与实验本章习题与实验习题:1、4、5实验:实验四四