《Visual C# NET程序设计基础》课件006_第1页
《Visual C# NET程序设计基础》课件006_第2页
《Visual C# NET程序设计基础》课件006_第3页
《Visual C# NET程序设计基础》课件006_第4页
《Visual C# NET程序设计基础》课件006_第5页
已阅读5页,还剩155页未读 继续免费阅读

下载本文档

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

文档简介

第6章WinForms控件6.1单选按钮 6.2图片框

6.3选项卡控件

6.4滚动条

6.5进度条

6.6其他高级控件(定时器、打印等控件)

6.7自定义控件

6.8综合案例:随机数游戏

本章小结

练习与作业

上机部分(六)

学习目标●单选控件、图片框控件、选项卡控件●滚动条、进度条控件●定时器控件●使用控件创建Windows应用程序●创建和使用自定义控件6.1单选按钮单选按钮RadioButton控件用于为要提供给用户的每个选项显示单选框。然后,用户可以通过单击与所需选项相对应的单选框来表明他们的选择。注意,用户一次只能选择一个选项。RadioButton在工具箱中的图标是。表6-1列出了RadioButton控件支持的属性、方法和事件。如果要对单选按钮进行分组,可以使用GroupBox控件,这样在同一个窗体上就可以同时对多个RadioButton按钮进行分组选择了,具体效果如图6-1所示。表6-1RadioButton的属性、方法和事件图6-1分组后的RadioButton【例6-1】下面举一个简单例子来说明如何获得用户单击单选按钮的值,步骤如下:

(1)首先创建一个WinForm程序,窗体Form1的设计界面如图6-2所示。注意,将单选按钮【男】的Checked属性设置为True。

(2)然后双击Button,进入Click事件并输入以下代码:

privatevoidbutton1_Click(objectsender,System.EventArgse) { stringstr=""; if(this.radioButton1.Checked) str+="男"; else str+="女"; MessageBox.Show(str); }(3)保存并运行程序,结果如图6-3所示。图6-2设计界面图6-3运行结果6.2图片框

PictureBox控件用于显示图像。图像的类型可以是BMP、JPEG、GIF、PNG、图元文件或图标。表6-2列出了PictureBox控件支持的属性和事件。PictureBox在工具箱中的图标是。

SizeMode属性使用PictureBoxSizeMode枚举确定图像在控件中的大小和位置。SizeMode属性可以是AutoSize、CenterImage、Normal和StretchImage。

默认情况下,PictureBox控件在显示时没有任何边框。即使图片框不包含任何图象,仍可使用BorderStyle属性为其提供一个标准或三维的边框。要加载PictureBox,首先创建一个基于Image的对象。例如,要把JPEG文件加载到PictureBox中,需要编写如下代码:

BitmapmyJpeg=newBitmap("mypic.jpg");pictureBox1.Image=(Image)myJpeg;

注意需要转换回Image类型,因为这是Image属性所要求的。表6-2PictureBox的属性、方法和事件

【例6-2】

下面举一个简单例子说明如何在PictureBox中动态显示一张图片,步骤如下:

(1)首先创建一个WinForm程序,窗体Form1的设计界面如图6-4所示。注意,PictureBox的SizeMode属性设置为StretchImage。

(2)然后双击Button,进入Click事件并输入以下代码:

privatevoidbutton1_Click(objectsender,EventArgse){BitmapmyJpeg=newBitmap(@"C:\Image\love.jpg");pictureBox1.Image=(Image)myJpeg;}(3)保存并运行程序,结果如图6-5所示。图6-4设计界面图6-5运行结果6.3选 项 卡 控 件

TabControl允许把相关的组件组合到一系列Tab页面上,它在工具箱中的图标是。TabControl管理TabPages集合。图6-6是一个设计时的选项卡控件,其中选定的是该控件的TabControl部分,这个TabControl中共有两个TabPage页,每个TabPage页可以用作控件的容器。表6-3列出了TabControl控件支持的属性、方法和事件。有几个属性可以控制TabControl的外观。Appearance属性使用TabAppearance枚举来确定Tab的外观。其值是FlatButtons、Buttons或Normal。Multiline属性的值是一个布尔值,确定是否显示多行Tab。如果Multiline属性设置为False,而有多个Tab不能一次显示出来,就提供一组箭头,允许用户滚动查看剩余的Tab。图6-6设计环境下的TabControl表6-3TabControl控件支持的属性、方法和事件TabPage的Text属性是在Tab上显示的内容。Text属性也在重写的构造函数中用作参数。一旦创建了TabPage控件,它基本上就是一个容器控件,用于放置其他控件。VisualStudio.NET中的设计器使用集合编辑器,很容易给TabControl控件添加TabPage控件。在添加每个页面时都可以设置各种属性。接着把其他子控件拖放到每个TabPage控件上。通过查看SelectedTab属性可以确定当前的Tab。每次选择新Tab时,都会引发SelectedIndex事件。通过监听SelectedIndex属性,再用SelectedTab属性确认当前Tab,就可以根据每个Tab进行特定的处理。【例6-3】下面举一个简单例子说明如何在TabControl中动态添加控件,步骤如下:

(1)首先创建一个WinForm程序,窗体Form1的设计界面如图6-7所示。

(2)然后双击窗体,进入Form1_Load事件并输入以下代码:

privatevoidForm1_Load(objectsender,EventArgse){this.tabPage1.Text="系统信息";this.tabPage2.Text="帮助";Labellabel1=newLabel();Labellabel2=newLabel();Buttonbutton1=newButton();label1.Text="计算机名:"+Environment.MachineName;label2.Text="操作系统:"+Environment.OSVersion.Platform.ToString();label1.Location=newPoint(10,10);label2.Location=newPoint(10,50);button1.Text="确定";button1.Click+=newEventHandler(button1_Click);button1.Location=newPoint(10,100);tabPage1.Controls.Add(label1);tabPage1.Controls.Add(label2);tabPage1.Controls.Add(button1);}voidbutton1_Click(objectsender,EventArgse){Application.Exit();}

在上面的代码段中,动态创建了两个Label控件和一个Button控件,对其设置属性后添加到TabPage1的控件集合中。同时,对Button控件的Click事件和方法button1_Click进行了预定,这样,当单击该Button时,将退出程序。

(3)保存并运行程序,结果如图6-8所示。图6-7设计界面图6-8运行结果6.4滚动条

WinForms支持的滚动条有两种类型:HScrollBar和VScrollBar。HScrollBar表示水平滚动条,在工具箱中的图标是,VScrollBar表示垂直滚动条,在工具箱中的图标是。可用滚动条控件为用户输入数值数据,该数据可以在控件中显示,也可以在代码中使用。表6-4列出了ScrollBar控件支持的属性和事件。滚动条的Value属性(默认值为0)是与滑块在滚动条中的位置相对应的一个整数值。当滑块的位置值最小时,滑块移到最左端(HScrollBar)或最顶端(VScrollBar);当滑块的位置值最大时,滑块移到最右端(HScrollBar)或最底端(VScrollBar)。Value属性的值总是在用户设置的Maximum属性和Minimum属性的范围之内。表6-4ScrollBar支持的属性和事件

当用户在滚动条的任何一边单击轨迹或按下PgUp/PgDn时,Value属性将按照LargeChange属性中设置的值而更改;当用户按下某一箭头或使用箭头键时,Value属性将按照SmallChange属性中设置的值而更改;

【例6-4】下面举一个简单例子来说明如何使用滚动条控件,步骤如下:

(1)首先创建一个WinForm程序,窗体的设计界面如图6-9所示。

(2)按照表6-5中所示设置控件Label的属性。图6-9设计界面表6-5Label属性设置(3)双击界面,进入Form_Load事件,添加如下代码:

privatevoidForm1_Load(objectsender,System.EventArgse){ hScrollBar1.Maximum=hScrollBar1.Width; label1.Width=hScrollBar1.Minimum;}(4)双击滚动条,进入Scroll事件,添加如下代码:

privatevoidhScrollBar1_Scroll(objectsender,System.Windows.Forms.ScrollEventArgse){ label1.Width=hScrollBar1.Value;}(5)保存并运行该程序,当用户移动滚动条时,Label的宽度也会随之改变。运行结果如图6-10所示。图6-10运行结果6.5进度条

ProgressBar控件是较长操作的状态的可视化表示,它在水平栏中显示相应数目的矩形,当操作完成时,该栏会被填满。使用它可以指示计算机正在进行某个操作,用户应等待。该控件在工具箱中的图标为。表6-6列出了ScrollBar控件支持的属性和方法。

ProgressBar控件工作时要设置Minimum和Maximum属性。这些属性对应于进度指示器的最左端(Minimum)和最右端(Maximum)。设置Step属性,以确定每次调用PerformStep方法时数值的增量。还可以使用Increment方法,递增在方法调用中传入的值。Value属性返回ProgressBar的当前值。表6-6ScrollBar的属性和方法

可以使用Text属性通知用户已完成了操作的百分数或还未处理的条目数。还有一个BackgroundImage属性可以定制进度条的外观。

【例6-5】下面举一个简单例子来说明如何使用进度条控件,步骤如下:

(1)首先创建一个WinForm程序,窗体的设计界面如图6-11所示。图6-11设计界面(2)双击【计算】按钮,进入Click事件,添加如下代码:

privatevoidbutton1_Click(objectsender,EventArgse){intnum=Convert.ToInt32(textBox1.Text);intres=0;progressBar1.Maximum=num;for(inti=1;i<=num;i++){res=res+i;progressBar1.Increment(1);}MessageBox.Show("计算结果为:"+res.ToString());(3)保存并运行该程序,运行结果如图6-12所示。图6-12运行结果6.6其他高级控件(定时器、打印等控件)WinForms所支持的某些控件具有特定的功能,其高级控件有Timer控件和打印支持控件。

1.Timer控件

Timer(定时器)控件是用来产生一定的时间间隔。在每个时间间隔中都可根据应用程序的要求有相同或不同的事件或过程发生,Timer控件在工具箱中的图标为。表6-7列出了Timer控件支持的属性、方法和事件。

Interval属性是Timer控件最重要的属性之一,它决定着事件或过程发生的时间间隔,Interval属性以千分之一秒为基本单位,就是事件发生的最短间隔是一毫秒,但是这样的时间间隔对系统的要求很高,因此按时间精度的要求适当设置这个属性也是工程运行速度和可靠性的一种保证。表6-7Timer的属性、方法和事件Enabled属性可以设置Timer控件是否为激活状态,一旦这个属性为False,那么Timer控件将失去作用。反之,如果在某个条件下将这个属性设置为True,Timer控件将会被激活,事件和过程将间隔发生。

使用Tick事件时,可用此事件在每次Timer控件时间间隔过去之后通知程序应该做什么,Interval属性指定Tick事件之间的间隔。无论何时,只要Timer控件的Enabled属性被设置为True,而且Interval属性大于0,则Tick事件以Interval属性指定的时间间隔发生。

【例6-6】下例将实现电子时钟的效果。其中Label1为一个标签,Timer1为一个定时器控件,运行效果图6-13所示。图6-13运行效果

在设计时,将Timer1的Enabled属性设置为True,Interval属性设置为1000。并在Tick事件中添加如下代码:

privatevoidtimer1_Tick(objectsender,System.EventArgse) { this.label1.Text=DateTime.Now.ToLongTimeString(); }2.打印支持控件打印支持控件主要有PrintDocument(打印文档)和PrintPreviewControl(打印预览)控件。下面分别讲解这两个控件并给出一个示例。1) PrintDocument控件

PrintDocument(打印文档)控件用于设置描述打印内容和打印文档能力的属性,PrintDocument控件的两种主要情况是:

(1)简单的打印作业,如打印单个文本文件。在该控件的PrintPage事件处理程序中添加打印文件的编程逻辑,该编程逻辑应以使用Print方法打印文档结束。

(2)更为复杂的打印作业,如想要重新使用已编写的打印逻辑的情况。在这种情况下,应从PrintDocument控件派生一个新组件,并重写PrintPage事件。

2) PrintPreviewControl控件

PrintPreviewControl(打印预览)控件用于显示PrintDocument控件打印时的外观,该控件没有按钮或其他用户界面元素。

该控件包含以下重要属性:

(1)属性Document,用于设置要预览的文档,文档必须是PrintDocument对象。

(2)属性Columns和Rows确定在控件上水平和垂直显示的页数。

【例6-7】下例将实现一个字符串的效果,实现步骤如下:

(1)在窗体上放置PrintDocument和PrintPreviewControl控件,如图6-14所示。注意,PrintDocument在运行时是不可视组件,将出现在下面的组件栏里。图6-14设计页面(2)接着,找到printDocument1的PrintPage事件,添加如下所示代码:privatevoidprintDocument1_PrintPage(objectsender,System.Drawing.Printing.PrintPageEventArgse){ e.Graphics.DrawRectangle(Pens.Black,e.MarginBounds); e.Graphics.DrawString("HelloWorld!",newFont("宋体",50,FontStyle.Italic),Brushes.Black,160,125);}(3)在Form1_Load事件中,添加如下代码。

privatevoidForm1_Load(objectsender,System.EventArgse){ printPreviewControl1.Document=printDocument1;}(4)保存并运行程序,运行效果如图6-15所示:在上述代码中,首先在PrintDocument控件的PrintPage事件中编写要打印的内容,然后在窗体装载时将打印预览控件PrintPreviewControl的Document属性赋值成已设置好打印内容的文档对象printDocument1。这样,当窗体运行时,我们就可以在打印预览控件PrintPreviewControl中看到打印文档PrintDocument中的内容了。

图6-15运行页面6.7自 定 义 控 件

WinForms为我们提供了大量的控件,这些控件可以满足大多数应用程序的要求。但是,有时我们需要能够满足特殊应用程序中特定任务的要求的组件。这时“自定义控件”可以帮助解决问题。从广义上说,自定义控件是指用户自己定制的控件,它分为两类:一类是用户控件,一类是狭义上的自定义控件。这两类控件的区别是:用户控件一般只在一个项目中实现重用,而自定义控件能够在多个项目中重用。下面我们通过例子来看看如何创建这两种不同类型的控件。6.7.1用户控件我们可以创建登录对话框,并将它保存为用户控件,这样,任何时候需要使用到它,只需将它从工具箱拖放到窗体上即可。要创建用户控件,请执行以下步骤:

(1)新建一个Windows应用程序。

(2)在资源管理器中该项目方案上单击右键,在弹出的菜单中选择“Add”→“UserControl…”,添加用户控件。

(3)从工具箱中为该用户控件添加控件,进行设计。

(4)在用户控件的事件过程中编写代码,以处理用户控件可能会引发的事件。

(5)保存文件,关闭控件设计器。(6)生成项目,这样,用户控件会显示在工具箱中。

(7)按照添加一般控件的通用方式,将用户控件添加到窗体中。

【例6-8】

下面将实现一个注册时判断用户输入的密码是否一致的控件,按照上面所讲的步骤,新建一个Windows程序FirstWindowsApplication,并添加一个自定义控件Login,其显示效果如图6-16所示。图6-16设计界面

接着,为该用户控件添加如下代码:

privatevoidtextBox2_Validating(objectsender,System.ComponentModel.CancelEventArgse){ if(textBox1.Text.Trim()!=textBox2.Text.Trim()) MessageBox.Show("密码输入不一致!");}privatevoidtextBox1_Validating(objectsender,System.ComponentModel.CancelEventArgse){ if(textBox1.Text.Trim()!=textBox2.Text.Trim()) MessageBox.Show("密码输入不一致!");}

在上述代码中,对用户输入的文本进行判断。当用户将光标从任何一个TextBox中移开时,将触发Validating事件。该事件将对两个文本框中的内容是否一致进行判断,并弹出提示消息。最后,当关闭控件设计页面并生成项目后,我们可以从工具箱的“FirstWindows-Application”选项卡中找到该Login控件并使用它,如图6-17所示。图6-17用户控件开发环境6.7.2自定义控件自定义控件的创建过程稍微复杂一些。一般来说,创建的第一步就是选取一个基类。基类的选择如下:

(1)已有控件类:最常用的自定义控件是那些对已有控件的行为只进行很小改动的控件。如果希望一个控件的行为与TextBox相似,那么就可以从TextBox中来继承并进行改进。

(2) System.Windows.Forms.Control:为自定义控件,使用这个基类是为了使这个控件与窗体的其他控件相孤立。也就是说,这个基类封装了一个存在对象显示的窗口,并能接受鼠标和键盘事件。

(3) System.ComponentModel.Component:使用这个基类将不会封装一个Win32窗口。使用这个基类的派生类将不会有用户的接口。(4) Object:所有类的最终基类都是Object。继承它的优点在于它提供了一个最轻量级的类。但这个类无法移植到桌面的 .NET框架下,因此较少使用。

【例6-9】采用第一种基类继承方法来创建一个扩展了的TextBox控件UltraTextBox。它具有如下特点:●是普通文本框(TextBox)的两倍。●在获得焦点的时候其中文本被高亮显示。●将文本作为大写字母保存。●提供一种方法,将文本作为小写字母来返回。要创建该控件,实现步骤如下:

(1)新建一个“Windows控件库”项目CustomerControls。

(2)将实现控件的代码文件改名为UltraTextBox.cs。(3) UltraTextBox.cs的后台代码如下:

usingSystem;usingSystem.Windows.Forms;namespaceCustomerControls{ publicclassUltraTextBox:TextBox { publicUltraTextBox() //构造函数

{

this.Width*=2; } protectedoverridevoidOnGotFocus(EventArgse) //重写方法{ base.OnGotFocus(e); this.SelectAll(); } publicoverridestringText //重写属性

{ get { returnbase.Text; } set { value=value.ToUpper(); base.Text=value; }} publicstringToStringLower() //初始化方法

{ returnthis.Text.ToLower(); } }}(4)生成控件项目。

(5)按照添加一般控件的通用方式,将该控件添加到其他项目的窗体中即可。6.8综合案例:随机数游戏在这一节中,我们将开发一个随机数游戏——LuckySeven。同时学习如何使用时钟控件和创建随机数。具体的创建步骤如下:

(1)创建一个Windows应用程序LuckySeven。

(2)设计如图6-18所示的窗体界面。

(3)按照表6-8中所示设置控件的属性。

(4)在窗体类中声明三个整型变量,用于存放三个随机数。

privateintd1,d2,d3;图6-18设计界面表6-8相关控件属性(5)双击Timer控件,在Tick事件中输入如下代码:

privatevoidtimer1_Tick(objectsender,System.EventArgse) { Randomrnd=newRandom(); d1=rnd.Next(10); d2=rnd.Next(10); d3=rnd.Next(10); lblFirst.Text=d1.ToString(); lblSecond.Text=d2.ToString(); lblThird.Text=d3.ToString(); }

注意,创建随机数我们使用的是Random类的对象。采用rnd.Next(10)方法将获得10以内(0~9)的随机整数。(6)双击【开始】按钮,在Click事件中输入如下代码:

privatevoidbtnStart_Click(objectsender,System.EventArgse) { timer1.Enabled=true; btnStart.Enabled=false; btnStop.Enabled=true; }(7)双击【结束】按钮,在Click事件中输入如下代码:

privatevoidbtnStop_Click(objectsender,System.EventArgse) { timer1.Enabled=false; btnStart.Enabled=true; btnStop.Enabled=false;if(d1==7||d2==7||d3==7) { MessageBox.Show("恭喜你,中奖了!"); } }(8)保存并运行应用程序,查看效果。本章小结

单选按钮RadioButton控件用于给用户的每个选项显示单选框。

PictureBox控件用于显示图像。

TabControl允许把相关的组件组合到一系列Tab页面上。

WinForms支持的滚动条有两种类型:HScrollBar和VScrollBar。

ProgressBar控件是较长操作的状态的可视化表示。

WinForms所支持的某些控件具有特定的功能,其高级控件有Timer控件和打印支持控件。

自定义控件是指用户自己定制的控件,分为两类:用户控件和自定义控件。练习与作业一、选择题

1.使用PictureBox显示图片时,要想让图片大小调整到PictureBox控件大小,则需将SizeMode属性设置为()。

A. AutoSize B. CenterImage C. Normal D. StretchImage2.要设置当用户点击滚动条箭头按钮时滑块移动的大小,可以设置的属性是()。

A. Maximum B. Minimum C. LargeChange D. SmallChange3.Timer的()事件在每个时间间隔内被重复激发。A.

Click B.

Tick C.

ServerTick D.

ServerClick4.要预览打印内容,必须设置PrintPreviewControl控件的()属性。A.

Text B.

Label

C.

Document D.

PrintText5.要创建一个自定义的Button控件,最好的方法是()。

A.继承Button类并进行扩展

B.继承UserControl类并进行扩展

C.继承Control类并进行扩展

D.继承Object类并进行扩展

二、编程题

1.创建一个Windows应用程序,使用户可以创建和打印贺卡。窗体通过TextBox接受用户输入的祝愿人姓名和问候语,并在打印预览PrintPreviewControl中浏览该卡片。

2.创建一个图片浏览器程序,当用户输入想要浏览的图片的路径后,从窗体的PictureBox中装载并显示该图片。上机部分(六)

实训目标学会使

温馨提示

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

评论

0/150

提交评论