VBNET教程6.ppt_第1页
VBNET教程6.ppt_第2页
VBNET教程6.ppt_第3页
VBNET教程6.ppt_第4页
VBNET教程6.ppt_第5页
已阅读5页,还剩96页未读 继续免费阅读

下载本文档

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

文档简介

1、VB.NET程序设计实用教程,第6章 Windows窗体与控件,本章主要内容,剪贴板演示程序,我的电子相册程序,石头、剪刀、布游戏程序,课程选择程序,日历时钟程序,本章任务,本章要点,窗体的属性、方法和事件,文本类控件的应用,按钮类控件的应用,列表类控件的应用,图片框控件的应用,进度条、滚动条、定时器、轨迹条等控件的应用,6.1 窗体与控件概述,Windows窗体和控件是利用VB .NET开发Windows应用程序的基础,在VB .NET的应用程序中,窗体和控件都是对象,都是类的实例。Windows窗体是可视化程序设计的基础界面,用来作为其它控件对象的载体或容器。控件是添加到窗体上的对象,是界

2、面上的要素,每种类型的控件都有一套属性、方法和事件,都实现某种特定的功能。,6.1 窗体与控件概述,在前面章节的各任务中,已经学习了窗体的一些知识,知道窗体就是Windows的窗口。也用到了一些常用的控件,如Label控件、TextBox控件、Button控件等,知道这些控件可以作为界面上的要素,都能实现一定的功能。在VB.NET中,Windows窗体和控件有很多,本章将通过5个任务详细介绍常用Windows窗体和控件的属性、方法、事件及使用方法。,6.2 任务6-1:我的电子相册程序窗体与图片框,任务6-1描述: 编写一个我的电子相册程序,程序的设计界面如图6-1所示。程序运行时将会出现如图

3、6-2所示的“欢迎”对话框,,图6-2 程序运行时出现的“欢迎”对话框,图6-1 程序设计界面,6.2 任务6-1:我的电子相册程序窗体与图片框,用户输入姓名后单击“确定”按钮将会进入电子相册(不需要姓名,将无法进入),如图6-3所示。当用户改变窗体大小时,照片自动改变大小以填满窗体。,用户可以通过微调控件输入照片序号,也可以通过滚动条输入照片序号来显示相应的照片,并且微调按钮和滚动条的输入可以相互更新。,图6-3 程序运行界面,6.2 任务6-1:我的电子相册程序窗体与图片框,显示的照片文件存放在应用程序目录下,文件名任意,照片的张数任意。只需单击“单击”按钮,将会出现6-4所示的“再见”对

4、话框,单击“确定”按钮将退出应用程序。,图6-4 “再见”对话框,6.2 任务6-1:我的电子相册程序窗体与图片框,窗体有一个事件Load,该事件在窗体加载时发生,故为了使程序刚开始执行时就显示出欢迎对话框,可在该事件过程中调用InputBox函数来实现。窗体有一个名为Closing的事件,该事件在窗体关闭时发生,因此可在该事件中调用MsgBox函数显示出“再见”对话框。显示照片可使用PictureBox控件(图片框控件),为使照片填满图片框控件,必须设置图片框控件的SizeMode属性值为StretchImage,并且在窗体刚加载时或改变大小时,把图片框的大小设置与窗体的大小一致。当窗体的大

5、小发生改变时,将会发生窗体的Resize事件,因此可以在该事件中重新设置图片框的大小。为了显示当前文件夹下的多张照片,可设置一个字符串数组用来存放所有照片的文件名,并通过Directory类的GetFiles方法获得所有照片的文件名。通过序号显示照片时,只需把序号值减1作为存放照片文件名的数组元素的下标,对应的元素值就是要显示的照片文件名,通过程序把该照片文件在图片框中显示出来即可。 为实现HScrollBar控件(水平滚动条控件)与NumericUpDown控件(微调控件)的相互更改,可在NumericUpDown控件的ValueChanged事件中把它的Value属性值赋值给HScroll

6、Bar控件的Value属性,在HScrollBar控件的Scroll事件中把它的Value属性值赋值给NumericUpDown控件的Value属性。,6.2 任务6-1:我的电子相册程序窗体与图片框,任务实现:,1.启动VB.NET,新建一个项目,项目类型为“Windows应用程序”,项目的存放位置为“D:VBTASKCH06”,项目名为“Task6_1”,2.把Form1窗体的Text属性值设置为“我的相册”,把它的Name属性值设置为“frmPhoto”。单击“解决方案资源管理器”中的“Form1.VB”窗体,3.然后在属性窗口中把它文件名属性设置为“frmPhoto.vb”。然后执行【

7、项目】【Task6_1属性】命令,在出现的“Task6_1属性页”对话框中把“启动对象”设置为“frmPhoto”,4.对照程序设计界面,为窗体添加控件并设置控件的属性。控件的属性设置如表6-1所示,6.2 任务6-1:我的电子相册程序窗体与图片框,表6-1 任务6-1控件属性设置及其功能,6.2 任务6-1:我的电子相册程序窗体与图片框,说明:,任务 4:,在代码“public class frmphoto”的上面输入如下语句。 Imports System.io,说明: 这条语句的作用是引入命名空间“System.io”,在该命名空间中有许多与文件有关的类,本任务中要取得在当前文件夹中存放

8、的照片文件名,需用到“Directory”类,因此需把该命名空间引入到程序中来。,任务 5:,定义模块级变量或数组,如下。,Dim ClientName As String 存放用户姓名 Dim PhotoName() As String 存放在当前文件夹中取出的照片文件名 Dim PicCount As Integer 存放当前文件夹中的照片数量,任务 6:,编写窗体的Load事件过程代码,如下,Private Sub frmPhoto_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBas

9、e.Load Dim PFName As String 循环直到用户输入姓名 Do ClientName = InputBox(嗨,朋友!欢迎您来到我的电子相册!, 欢迎!, ) Loop While Len(Trim(ClientName) = 0 把用户的姓名作为欢迎词的一部分显示在标题栏上 Me.Text = 欢迎 SizeMode属性:该属性用来决定图像的显示模式。其取值有四种情况,取值 及含义如表6-2所示。各种模式下的图片显示样式如图6-5所示。,表6-2 SizeMode属性的取值及其含义,图6-5 图片框显示模式示例,任务 7:,编写窗体的Closing事件过程代码,如下。 P

10、rivate Sub frmPhoto_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing MsgBox(欢迎您再次来到我的相册,再见!, , 再见) End Sub,编写窗体的Resizing事件过程代码,如下。 Private Sub frmPhoto_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Resize PictureBox

11、1.Left = 0 图片框靠左上角显示 PictureBox1.Top = 0 图片框在视觉上充满整个窗体(除了Panel1占据的空间外) PictureBox1.Height = Me.ClientSize.Height - Panel1.Height PictureBox1.Width = Me.ClientSize.Width End Sub,任务 8:,说明:,(1)在事件代码中通过给图片框PictureBox1的Top和Left属性赋值0,使图片框靠左上角显示。通过给图片框PictureBox1的Height和Width属性赋值,使之填满整个窗体。这样程序运行时,用户改变窗体的大小

12、,照片的大小也相应地变化。 (2)ClientSize是窗体的一个属性,其作用是用户区的大小。窗体的属性有很多,下面着重介绍窗体的常用属性。,Name属性:用来获取或设置窗体的名称,在应用程序中可通过该属性来引用窗体。 WindowState属性:用来获取或设置窗体的窗口状态。取值有三种:FormWindowState.Normal(窗体正常显示)、FormWindowState.Minimized(窗体以最小化形式显示)和FormWindowState.Maximized(窗体以最大化形式显示)。 StartPosition属性:用来获取或设置运行时窗体的起始位置。其取值及含义如表6-3所示

13、。默认的起始位置是 FormStartPosition.WindowsDefaultLocation。,表6-3 窗体的起始位置取值及其含义,窗体的属性:,窗体的属性:,AcceptButton属性:该属性用来获取或设置一个值,该值是一个按钮的名称,当用户按 ENTER 键时就相当于单击了窗体上的该按钮。 CancelButton属性:该属性用来获取或设置一个值,该值是一个按钮的名称,当用户按ESC键时就相当于单击了窗体上的该按钮。 Modal属性:该属性用来设置窗体是否为有模式显示窗体。如果有模式地显示该窗体,该属性值为 True; 否则为 False。当有模式地显示窗体时,用户只能和模式窗

14、体进行交互。必须隐藏或关闭模式窗体(通常是响应某个用户操作),然后才能与另一窗体进行交互。有模式显示的窗体通常用作应用程序中的对话框。 ActiveControl属性:用来获取或设置容器控件中的活动控件。窗体也是一种容器控件。 ActiveMdiChild属性:用来获取多文档界面(MDI)的当前活动子窗口。 AutoScroll属性:用来获取或设置一个值,该值指示窗体是否实现自动滚动。如果此属性值设置为 True,则当任何控件位于窗体工作区之外时,会在该窗体上显示滚动条。另外,当自动滚动打开时,窗体的工作区自动滚动,以使具有输入焦点的控件可见。AcceptButton属性:该属性用来获取或设置

15、一个值,该值是一个按钮的名称,当用户按 ENTER 键时就相当于单击了窗体上的该按钮。 CancelButton属性:该属性用来获取或设置一个值,该值是一个按钮的名称,当用户按ESC键时就相当于单击了窗体上的该按钮。 Modal属性:该属性用来设置窗体是否为有模式显示窗体。如果有模式地显示该窗体,该属性值为 True; 否则为 False。当有模式地显示窗体时,用户只能和模式窗体进行交互。必须隐藏或关闭模式窗体(通常是响应某个用户操作),然后才能与另一窗体进行交互。有模式显示的窗体通常用作应用程序中的对话框。,窗体的属性:,ActiveControl属性:用来获取或设置容器控件中的活动控件。窗

16、体也是一种容器控件。 ActiveMdiChild属性:用来获取多文档界面(MDI)的当前活动子窗口。 AutoScroll属性:用来获取或设置一个值,该值指示窗体是否实现自动滚动。如果此属性值设置为 True,则当任何控件位于窗体工作区之外时,会在该窗体上显示滚动条。另外,当自动滚动打开时,窗体的工作区自动滚动,以使具有输入焦点的控件可见。 BackColor属性:用来获取或设置窗体的背景色。 BackgroundImage属性:用来获取或设置窗体的背景图像。 Enabled属性:用来获取或设置一个值,该值指示控件是否可以对用户交互作出响应。如果控件可以对用户交互作出响应,则为 True;否

17、则为 False。默认值为 True。 Font属性:用来获取或设置窗体或控件显示的文本的字体。 ForeColor属性:用来获取或设置窗体或控件的前景色。 IsMdiChild属性:获取一个值,该值指示该窗体是否为多文档界面 (MDI) 子窗体。值为True时,是子窗体,值为False时,不是子窗体。IsMdiContainer属性:获取或设置一个值,该值指示窗体是否为多文档界面 (MDI) 中的子窗体的容器。值为True时,是子窗体的容器,值为False时,不是子窗体的容器。,窗体的属性:,KeyPreview属性:该属性用来获取或设置一个值,该值指示在将按键事件传递到具有焦点的控件前,窗

18、体是否将接收该事件。值为True时,窗体将接收按键事件,值为False时,窗体不接收按键事件。 MdiChildren属性:数组属性。数组中的每个元素表示以此窗体作为父窗体的多文档界面 (MDI) 子窗体。 MdiParent属性:该属性用来获取或设置此窗体的当前多文档界面 (MDI) 父窗体。 ShowInTaskbar属性:该属性用来获取或设置一个值,该值指示是否在 Windows 任务栏中显示窗体。 Visible属性:该属性获取或设置一个值,该值指示是否显示该窗体或控件。值为True时显示窗体或控件,值为False时不显示。 Capture属性:如果该属性值为True,则鼠标就会被限定

19、只由此控件响应,不管鼠标是否在此控件的范围内。,窗体的属性:,(3)Load、Closing和Resizing均是窗体的事件名,窗体能够响应的事件有很多,下面介绍窗体常用的事件及其发生场合。,Load事件:该事件在窗体加载到内存时发生,即在第一次显 示窗体前发生。 Activated事件:该事件在窗体激活时发生。 Deactivate事件:该事件在窗体失去焦点成为不活动窗体时 发生。 Resize事件:该事件在改变窗体大小时发生。 Paint事件:该事件在重绘窗体时发生。 Click事件:该事件在用户单击窗体时发生。 DoubleClick事件:该事件在用户双击窗体时发生。 Closed事件:

20、该事件在关闭窗体时发生。,(4)语句中的“Panel1.Height”使用了Panel1控件的Height方法。Panel控件通常作为面板存在,用来容纳其它控件。它除了具有Height、Top、Left、Width等常用属性以外,还有一个重要属性Dock,用来指出Panel控件停泊在哪个边上,该属性的设置如图6-6所示,可通过单击相应的方块来设置停泊属性。,图6-6 Dock属性的设置,任务 9:,编写“退出”按钮的Click事件过程代码 :,说明:,程序中语句“Me.Close()”中的Me代表的是当前窗体,Close是窗体的一个方法,其作用是关闭窗体。窗体的方法也有很多,下面介绍一些窗体的

21、最常用方法。,任务 10:,运行程序,运行界面,将会出现如图6-2所示的对话框,用户输入姓名后单击“确定”按钮,将会出现如图6-3所示程序运行界面,改变窗体的大小,照片将会相应地改变大小。单击“退出”按钮,将会出现如图6-4的对话框,单击“确定”按钮,程序退出。,图6-2 程序运行时出现的“欢迎”对话框,图6-3 程序运行界面,图6-4 “再见”对话框,任务 11:,编写NumericUpDown1控件的ValueChanged事件过程代码,如下 :,Private Sub NumericUpDown1_ValueChanged(ByVal sender As System.Object, B

22、yVal e As System.EventArgs) Handles NumericUpDown1.ValueChanged Static cs As Integer = 0 用来判断是否是第一个执行该事件过程的代码 If cs 0 Then 如果不是第一次执行该事件过程代码,将显示图片 PictureBox1.Image = Image.FromFile(PhotoName(NumericUpDown1.Value - 1) 使水平滚动条的值与NumericUpDown1.Value的值一致 HScrollBar1.Value = NumericUpDown1.Value End If c

23、s = 1 执行一次后Cs 变量为1 End Sub,说明:,(1)由于在初始化时,要发生一次“ValueChanged”事件,在此时若访问其它控件将会出现错误。因此在本事件过程中,定义了一个静态变量cs,初始值为0,在第一次执行时,若其值为0则什么都不执行。第一次执行时,把cs的值设置为1,下一次执行该过程时,cs的值依旧是上一次退出时的值1,因此就显示相应序号的相片了。,(2)NumericUpDown控件看起来像是一个文本框与一对上下箭头按钮的组合。用户可以通过单击向上和向下按钮、按向上和向下箭头键来增大和减小数字,用户也可以直接输入数字。单击向上箭头键时,值向最大值方向增加;单击向下箭

24、头键时,值向最小值方向减少。 NumericUpDown控件的常用属性如下: DecimalPlaces:获取或设置该控件中显示的小数位数。 Hexadecimal:获取或设置一个值,该值指示该控件是否以十六进制格式显示所包含的值。值为True时,以十六进制的形式显示值,值为False时,以十进制的形式显示值。 Increment:获取或设置单击向上或向下按钮时,该控件递增或递减的值。 Maximum:获取或设置该控件的最大值。 Minimum:获取或设置该控件的最小值。 Value:获取或设置该控件的当前值。 NumericUpDown控件的常用事件响应的主要事件有:ValueChanged

25、(在Value属性值发生改变时发生)、GotFocus(在获得焦点时发生)、LostFocus(在失去焦点时发生)等。,任务 12:,Private Sub HScrollBar1_Scroll(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ScrollEventArgs) Handles HScrollBar1.Scroll Static cs As Integer = 0 用来判断是否是第一个执行该事件过程的代码 If cs 0 Then 如果不是第一次执行该事件过程代码,将显示图片 PictureBox1.I

26、mage = Image.FromFile(PhotoName(NumericUpDown1.Value - 1) 使NumericUpDown1.Value的值与水平滚动条的值一致 NumericUpDown1.Value = HScrollBar1.Value End If cs = 1 执行一次后Cs 变量为1 End Sub,任务 13:,编写HScrollBar1_Scroll的ValueChanged事件代码,说明: (1)滚动条(ScrollBar)是大部分Windows应用程序中都具有的控件,是Windows界面的一种常见元素,通常分为水平滚动条(HScrollBar)垂直滚动

27、条(VScrollBar)。HScrollBar在工具箱中的图标是“”,VScrollBar控件在工具箱中的图标是“”。这两个控件主要用于在应用程序或控件中水平或垂直滚动,以方便在较长的列表中或大量信息中转移。 (2)滚动条控件的常用属性如下。 Minimum和Maximum属性:与TrackBar控件的同名属性基本相同。 Value属性:该属性用于设置或返回滑块在滚动条中所处的位置,其默认值为0。当滑块的位置值为最小值时,滑块移到水平滚动条的最左端位置,或移到垂直滚动条的顶端位置。当滑块的位置值为最大值时,滑块移到水平滚动条的最右端位置或垂直滚动条的底端位置。 SmallChange和Lar

28、geChange属性:这两个属性主要用于调整滑块移动的距离。其中SmallChange属性用于控制当鼠标单击滚动条两边的箭头时,滑块滚动的值,即Value属性增加或减小的值。而LargeChange属性则控制当用鼠标直接单击滚动条时滑块滚动的值。当用户按下PageUp键或PageDown键或者在滑块的任何一边单击滚动条轨迹时,Value属性将按照LargeChange属性中设置的值进行增加或减小。,任务 14:,运行程序,在图6-3所示的程序运行界面上滚动滚动条,会发现NumericUpDown1控件中的值将发生变化,同时显示的照片将会改变。改变NumericUpDown1控件的值,将会发现滚

29、动条的滑块位置将会发生相应变化,显示的照片也会相应地发生改变。,任务 15:,保存项目,本任务到此全部完成,归纳说明:,本任务通过“我的相册程序”的实现过程,详细地讲解了窗体的常用属性、事件和方法的使用,讲解了使用PictureBox控件显示图片的方法,讲解了通过ScrollBar控件和NumericUpDown控件输入数据的方法。在本任务中,有以下几个技巧,读者应认真领会:一是如何使图片充满整个窗体;二是如何使ScrollBar控件和NumericUpDown控件联动(即相互改变值);三是如何使用静态变量处理问题。,思考与实训: 1如何使图片框中的图片充满整个窗体并能够随着窗体大小的改变而改

30、变? 2ScrollBar控件和NumericUpDown控件各有什么作用?它们都有一个Value属性值,当该属性值发生改变时,将会发生什么事件? 3请分别说明滚动条控件的Minimum属性、Maximum属性、Value属性、SmallChange属性和LargeChange属性的作用。 4编写一个程序,用VScrollBar控件调整窗体的高,用NumericUpDown控件调整窗体的宽度,程序设计界面如图6-7所示。 图6-7 程序设计界面图6-8 程序运行界面 5编写一个照片浏览程序,程序执行时单击一下照片,将会显示下一张照片,当所有的照片显示完后将从头开始循环显示,如图6-8所示。,6

31、.3 任务6-2:剪贴板演示程序文本框与命令按钮,任务6-2描述: 编写一个实现类似于Windows的剪贴板功能及查看剪贴板中文本的程序。程序的设计界面如图6-9所示。该图中左边的文本框用来表示文档,该图右边的文本框用来表示剪贴板。图中的“复制”、“剪切”和“粘贴”按钮分别用来实现剪贴板的三个操作,“清除”按钮用来清除剪贴板的内容。图中下边的文本框用来存放在文档中选中的字符个数。程序某时刻的运行界面如图6-10所示。,图6-9 程序设计界面,图6-10 程序运行界面,任务分析:,Windows剪贴板的基本操作包括“剪切”、“复制”和“粘贴”,“剪切”和“复制”只有在文档中有选中对象的时候才能够

32、使用,“粘贴”只有在剪贴板上有内容才可使用。为了能使“剪切”和“复制”功能能够使用,程序运行时应时刻探测是否有选中的内容。本题使用鼠标来选中文本,因此可在鼠标的MouseUp事件中测试有没有文本选中(文本框的SelectionLength属性值不为0),如果有文本选中,则置“剪切”和“复制”按钮可用,同时在图中下面的文本框中显示选中的字符个数(通过文本框的SelectionLength属性)。“剪切”、“复制”和“粘贴”按钮的功能基本上同Windows剪贴板,实现方法在程序代码后面的注释处将详细解释,此处不再赘述。,任务实现:,1启动VB.NET,新建一个项目,项目类型为“Windows应用程

33、序”,项目的存放位置为“D:VBTASKCH06”,项目名为“Task6_2”。 2把Form1窗体的Text属性值设置为“剪贴板演示程序”,把它的Name属性值设置为“frmClipBoard”。单击“解决方案资源管理器”中的“Form1.VB”窗体,然后在属性窗口中把它文件名属性设置为“frmClipBoard.vb”。然后执行【项目】【Task6_2属性】命令,在出现的“Task6_2属性页”对话框中把“启动对象”设置为“frmClipBoard”。 3对照程序设计界面,为窗体添加控件并设置控件的属性。控件的属性设置如表6-4所示。 4编写Button1按钮的Click事件过程代码,如下

34、。 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click TextBox2.Text = TextBox1.SelectedText 把选中的文本复制到剪粘板上 Button3.Enabled = True 使粘贴按钮不可用 End Sub,说明: (1)程序中把TextBox1中选中的文本直接赋值给TextBox2.Text属性,模拟复制功能。 (2)文本框主要用于文本的输入、显示、编辑和修改,它有许多属性,程序中的“Selecte

35、dText”就是它的一个属性。该控件的主要属性及其含义如下。 Text属性:Text属性是文本框最重要的属性,因为要显示的文本就包含在Text属性中。默认情况下,最多可在一个文本框中输入2048个字符。如果将MultiLine属性设置为True,则最多可输入32KB的文本。Text属性可以在设计时使用【属性】窗口设置,也可以在运行时用代码设置或者通过用户输入来设置。可以在运行时通过读取Text属性来获得文本框的当前内容。 MaxLength属性:该属性用来设置文本框允许输入字符的最大长度,该属性值为0时,不限制输入的字符数。 MultiLine属性:该属性用来设置文本框中的文本是否可以输入多行

36、并以多行显示。值为True时,允许多行显示。值为False时不允许多行显示,一旦文本超过文本框宽度时,超过部分不显示。 HideSelection属性:该属性用来决定当焦点离开文本框后,选中的文本是否还以选中的方式显示,值为True,则不以选中的方式显示,值为False时将依旧以选中的方式显示。 ReadOnly属性:该属性用来获取或设置一个值,该值指示文本框中的文本是否为只读。值为True时为只读,值为False时可读可写。 PasswordChar属性:该属性是一个字符串类型,允许设置一个字符,运行程序时,将输入到Text的内容全部显示为该属性值,从而起到保密作用,通常用来输入口令或密码。

37、,ScrollBars属性:该属性用来设置滚动条模式,有四种选择:ScrollBars.None为无滚动条,ScrollBars.Horizontal为有水平滚动条,ScrollBars.Vertical为有垂直滚动条,ScrollBars.Both为有水平和垂直滚动条。 注意:只有当MultiLine属性为True时,该属性值才有效。在WordWrap属性值为True时,水平滚动条将不起作用 SelectionLength属性:该属性用来获取或设置文本框中选定的字符数。只能在代码中使用,值为0时,表示未选中任何字符。 SelectionStart属性:该属性用来获取或设置文本框中选定的文本起

38、始点。只能在代码中使用,第一个字符的位置为0,第二个字符的位置为1,依此类推。如果没有选中的文本,则表示插入点所在的位置。 SelectedText属性:该属性用来获取或设置一个字符串,该字符串指示控件中当前选定的文本。只能在代码中使用。 Lines:该属性是一个数组属性,用来获取或设置文本框控件中的文本行。即文本框中的每一行存放在Lines数组的一个元素中。 Modified:该属性用来获取或设置一个值,该值指示自创建文本框控件或上次设置该控件的内容后,用户是否修改了该控件的内容。值为True表示修改过,值为False表示没有修改过。,5编写Button2按钮的Click事件过程代码,如下。

39、 Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim SL As String 存放选中文本或插入点左边的文本 Dim SR As String 存放选中文本或插入点右边的文本 TextBox2.Text = TextBox1.SelectedText 把选中的字符串送到“剪切板上” SL = Mid(TextBox1.Text, 1, TextBox1.SelectionStart) 获取选中字符串左边的字符串 获取选中字

40、符串右边的字符串 SR = Mid(TextBox1.Text, TextBox1.SelectionStart + TextBox1.SelectionLength + 1) TextBox1.Text = SL + SR 给TextBox1.Text赋值,消除了选中字符串 TextBox3.Text = 0 给TextBox3赋值“0”,表示没有字符被选中 Button1.Enabled = False 复制按钮不可用 Button2.Enabled = False 剪切按钮不可用 Button3.Enabled = True 粘贴按钮可用 End Sub,说明: 上述代码中首先把Text

41、Box1中选中的文本显示在TextBox1中,然后在TextBox1文 本框中分离出选中文本左边的文本和选中文本右边的文本,再把它们连接在一起再显示在TextBox1文本框中,选中的文本就被删除了,就好象选中的文本被剪切掉一样。 6编写Button3按钮的Click事件过程代码,如下。 Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click 用剪切板上的数据代替选中的字符,如果没有选中的字符串,则处于插入点处 TextBox1.Sele

42、ctedText = TextBox2.Text Button1.Enabled = False 复制按钮不可用 Button2.Enabled = False 剪切按钮不可用 TextBox3.Text = 0 给TextBox3赋值“0”,表示没有字符被选中 End Sub 说明: 代码中把TextBox2文本框中的内容赋值给TextBox1的SelectedText属性,就好象执行了粘贴一样。,7编写TextBox1控件MouseMove事件过程代码,如下。 Private Sub TextBox1_MouseUp(ByVal sender As Object, ByVal e As S

43、ystem.Windows.Forms.MouseEventArgs) Handles TextBox1.MouseUp If TextBox1.SelectionLength 0 Then 如果选中文本 Button1.Enabled = True 复制按钮可用 Button2.Enabled = True 剪切按钮可用 给TextBox3赋值选中的字符长度,以显示选中了多少个字符 TextBox3.Text = Str(TextBox1.SelectionLength) Else 如果没有选文本 Button1.Enabled = False 复制按钮不可用 Button2.Enabled

44、 = False 剪切按钮不可用 TextBox3.Text = 0 给TextBox3赋值“0”,表示没有字符被选中 End If End Sub 说明: (1)“MouseUp”事件是在鼠标键释放时发生。当按下鼠标左键选中文本后释放鼠标键时将发生该事件,在该事件中通过文本框的SelectionLength属性判断是否选中的文本,如果有选中的文本则使“剪切”和“复制”按钮可用,同时显示出选中文本的字符个数,如果无选中的文本则使“剪切”和“复制”按钮不可用,同时显示选中文本的字符个数为0。,(2)除了响应MouseUp事件外,TextBox控件还响应许多其它事件。此处只介绍一下它的最常用的三个

45、事件,其他事件将在相关章节中加以讲解。 GotFocus事件:该事件在文本框接收焦点时发生。 LostFocus事件:该事件在文本框失去焦点时发生。 TextChanged事件:该事件在Text 属性值更改时发生。无论是通过编程修改还是通过用户交互更改文本框的Text属性值,均会引发此事件。 8保存项目,运行程序并对程序的功能进行测试。本任务至此全部完成。归纳说明: 本任务通过剪贴板演示程序的实现过程,详细讲解了文本框控件的常用属性的含义及使用方法,另外还讲解了文本框控件的MouseUp事件的作用、发生时机及使用方法。文本框是最为常用的控件之一,读者对于它的属性应该有较深刻地掌握。 拓展与提高

46、 本题实现的是剪贴板的演示功能,并非真正的剪贴板功能。其实文本框提供了实现剪贴板功能的方法,它们分别是Copy方法、Cut方法和Paste方法,分别实现剪贴板的复制、剪切和粘贴功能。文本框还有许多方法,使用这些方法可以轻松地实现较为复杂的文本处理功能。文本框的常用方法如下。 AppendText方法:该方法的作用是把一个字符串添加到文件框中文本的后面,,Focus方法:该方法的作用是为文本框设置焦点。如果焦点设置成功,返回值为 True,否则返回值为 False。调用的一般格式如下: 文本框对象.Focus() 该方法无参数。 Copy方法:该方法将文本框中的当前选定内容复制到剪贴板上。调用的

47、般格式如下: 文本框对象.Copy() 该方法无参数。 Cut方法:该方法将文本框中的当前选定内容移动到剪贴板上。调用的一般格式如下: 文本框对象.Cut() 该方法无参数。 Paste方法:该方法是用剪贴板的内容替换文本框中的当前选定内容。调用的一般格式如下: 文本框对象.Paste() 该方法无参数。 Undo方法:该方法的作用是撤消文本框中的上一个编辑操作。调用的一般格式如下: 文本框对象.Undo() 该方法无参数。,ClearUndo方法:该方法是从该文本框的撤消缓冲区中清除关于最近操作的信息,根据应用程序的状态,可以使用此方法防止重复执行撤消操作。调用的一般格式如下: 文本框对象.

48、ClearUndo() 该方法无参数。 Select方法:该方法是用来在文本框中设置选定文本。调用的一般格式如下: 文本框对象.Select(start,length) 该方法有两个参数,第一个参数start用来设定文本框中当前选定文本的第一个字符的位置,第二个参数length用来设定要选择的字符数。 SelectAll方法:该方法用来选定文本框中的所有文本。调用的一般格式如下: 文本框对象.SelectAll() 该方法无参数。 思考与实训: 1试举例说明文本框可用于哪些方面? 2试分别说明文本框的MultiLine、MultiLine、SelectionStart、SelectionLen

49、gth、SelectedText、Lines、Modified等属性的含义。 3当文本框获得焦点时,将会发生什么事件?当文本框失去焦点时将会发生什么事件?当文本框中的内容发生改变时将会发生什么事件? 4编写一个打字复制机程序。程序的设计界面如图6-11所示,程序运行时,在第一个文本框中输入的内容将在第二个文本框中显示出来,如图6-12所示。,图6-11 程序设计界面图6-12 程序运行界面,5编写一个对文本框中选中的字符倒序存放的程序。程序的设计界面如图6-13所示,程序的运行界面如图6-14所示。程序运行时在上面的文本框中输入文本,然后在“开始位置”后的文本框中输入要选定的字符的起始位置,在

50、“长度”后面的文本框中输入要选中字符的长度。输入完毕后按“选择”按钮将在上面的文本框中选定指定的字符串,然后单击“倒序”按钮将把选中的字符串反序存放并显示在下面的文本框中。,图6-13 程序设计界面 图6-14 程序运行界面,6.4 任务6-3:石头、剪刀、布游戏单选钮与复选框,任务6-3描述: 编写一个与计算机玩“石头、剪刀、布”游戏的程序。程序的设计界面如图6-15所示,程序刚开始的运行界面如图6-16所示。玩家用鼠标单击选择石头、剪刀或布单选按钮,计算机则随机选择,进行比赛。若用户选中复选框“战报”,将会显示出玩家和计算机的总的交手次数及输、赢与平手的次数,如图6-17所示。,图6-15

51、 程序运行界面 图6-16 程序运行界面一,图6-17 程序运行界面2,任务分析: 为记录输、赢和平手的次数,可定义三个模块级变量作为计数器。玩家出手可使用一个三个单选按钮来实现,玩家“出手”时将发生相应单选按钮的Click事件,在各按钮Click事件中用1表示玩家出石头,用2表示玩家出剪刀,用3表示玩家出布。然后再随机产生一个13之间的整数作为计算机的出手情况,用玩家出手的数和计算机“出手”的数进行比较,就知道本次谁输谁赢或平手,并显示相应信息并使相应的计数器加1。再根据玩家和计算机的出手情况,在相应的图像框中显示图形即可。战报的隐藏和显示只需改变一个窗体的宽度即可。 任务实现: 1启动VB

52、.NET,新建一个项目,项目类型为“Windows应用程序”,项目的存放位置为“D:VBTASKCH06”,项目名为“Task6_3”。 2把Form1窗体的Text属性值设置为“石头、剪刀、布游戏”,把它的Name属性值设置为“frmGame”。单击“解决方案资源管理器”中的“Form1.VB”窗体,然后在属性窗口中把它文件名属性设置为“frmGame.vb”。然后执行【项目】【Task6_3属性】命令,在出现的“Task6_3属性页”对话框中把“启动对象”设置为“frmGame”。 3对照程序设计界面,为窗体添加控件并设置控件的属性。控件的属性设置如表6-4所示。,说明: (1)Radio

53、Button控件又称单选按钮控件,其在工具箱中的图标为“”,单选按钮通常成组出现,用于为用户提供两个或多个互斥选项。 (2)CheckBox控件又称为复选框,它在工具箱中的图标为“”。复选框与单选按钮类似,也给用户提供一组选项供用户选择。但它与单选按钮又有不同,每个复选框都是一个单独的选项,用户既可以选择它,也可以不选择它,不存在互斥的问题,可以从一组复选框中同时选择一项或多项,甚至不选。 4定义模块级变量,代码如下。 Dim ANum, BNum, CNum As Integer 存放赢的次数和输的次数 5由于用户每次出手以及出不同的手,都要显示图形、判断输赢、显示交手情况,因此可把该功能定

54、义成一个过程,在需要时调用即可。定义的过程名为“judge”,代码如下。 Private Sub judge(ByVal PlayerChoice As Integer) Dim ComputerChoice As Integer Select Case PlayerChoice Case 1 PictureBox1.Image = Image.FromFile(P1.jpg) 显示玩家出的“石头”图形 Case 2 PictureBox1.Image = Image.FromFile(P2.jpg) 显示玩家出的“剪刀”图形 Case 3,PictureBox1.Image = Image.

55、FromFile(P1.jpg) 显示玩家出的“布”图形 End Select ComputerChoice = Int(Rnd() * 3) + 1 随机产生计算机出手的情况 Select Case ComputerChoice Case 1 PictureBox2.Image = Image.FromFile(C1.jpg) 显示计算机出的“石头”图形 Case 2 PictureBox2.Image = Image.FromFile(C2.jpg) 显示计算机出的“剪刀”图形 Case 3 PictureBox2.Image = Image.FromFile(C3.jpg) 显示计算机出

56、的“布”图形 End Select If PlayerChoice - ComputerChoice = 0 Then 平手 Label3.Text = 平手! 显示“平手”提示信息 BNum = BNum + 1 平手次数加1 Else If (PlayerChoice - ComputerChoice = -1) Or (PlayerChoice - ComputerChoice = 2) Then 玩家赢了,Label3.Text = 恭喜你,你赢了! 显示“玩家赢了”的提示信息 ANum = ANum + 1 玩家赢的次数加1 Else Label3.Text = 这次电脑赢了! 显示

57、“电脑赢了”的提示信息 CNum = CNum + 1 电脑赢的次数加1 End If End If TextBox1.Text = CStr(ANum) 显示玩家赢的次数 TextBox2.Text = CStr(BNum) 显示电脑赢的次数 TextBox3.Text = CStr(CNum) 显示计算机赢的次数 TextBox4.Text = CStr(ANum + BNum + CNum) 显示交手总次数 End Sub 说明: 通用过程有一个参数PlayerChoice用来表示用户的出手情况,值为1代表出石头,值为2代表出剪刀,值为3代表出布。在过程中首先根据PlayerChoice

58、的值显示玩家出手的图片,然后用计算机随机产生13之间的随机数作为计算机的出手,接着判断玩家和计算机的输羸情况,显示本次输赢信息并把相应的计算器变量值加1,最后把输、赢、平手和总次数显示出来。,6编写窗体的Load事件过程代码,如下。 Private Sub frmGame_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ANum = 0 赢的次数赋初值0 BNum = 0 平的次数赋初值0 CNum = 0 输的次数赋初值0 Label3.Text = 显示结果的标签置空 TextBox1.Text = 0 显示次数的四个文本框显示0 TextBox2.Text = 0 : TextBox3.Text = 0 TextBox4.Text = 0 : Randomize() 随机数初始化 CheckBox1.Checked = False 没有选中 Me.Width = 245 战报信息不显示出来 End Sub 说明: 程序中语句“CheckBox1.Checked = False”的作用是使复选框CheckBox1没有选中。Checked是复选框的一个属性。CheckBox控件的常用属性如下。 TextAlign属性:该属性用来设置控件中文字的对齐

温馨提示

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

评论

0/150

提交评论