【VB开源代码栏目提醒】:本文主要为网学会员提供“VBNET程序设计实用教程6 - 编程语言”,希望对需要VBNET程序设计实用教程6 - 编程语言网友有所帮助,学习一下!
第6章 Windows窗体与控件 本章主要内容 剪贴板
演示程序 我的电子相册程序 石头、剪刀、布游戏程序
课程选择程序 日历时钟程序 本章任务 本章要点 窗体的属性、方法和事件 文本类控件的应用 按钮类控件的应用
列表类控件的应用 图片框控件的应用 进度条、滚动条、定时器、轨迹条等控件的应用 6.1 窗体与控件概述 Windows窗体和控件是利用
VB .NET开发Windows应用程序的基础在
VB .
NET的应用程序中窗体和控件都是对象都是类的实例。
Windows窗体是可视化程序设计的基础界面用来作为其它控件对象的载体或容器。
控件是添加到窗体上的对象是界面上的要素每种类型的控件都有一套属性、方法和事件都实现某种特定的功能。
6.1 窗体与控件概述 在前面章节的各任务中已经
学习了窗体的一些知识知道窗体就是Windows的窗口。
也用到了一些常用的控件如Label控件、TextBox控件、Button控件等知道这些控件可以作为界面上的要素都能实现一定的功能。
在
VB.NET中Windows窗体和控件有很多本章将通过5个任务详细介绍常用Windows窗体和控件的属性、方法、事件及使用方法。
6.2 任务6-1我的电子相册程序——窗体与图片框 任务6-1描述 编写一个我的电子相册程序程序的设计界面如图6-1所示。
程序运行时将会出现如图6-2所示的“欢迎”对话框 图6-2 程序运行时出现的“欢迎”对话框 图6-1 程序
设计界面 6.2 任务6-1我的电子相册程序——窗体与图片框 用户输入姓名后单击“确定”按钮将会进入电子相册不需要姓名将无法进入如图6-3所示。
当用户改变窗体大小时照片自动改变大小以填满窗体。
用户可以通过微调控件输入照片序号也可以通过滚动条输入照片序号来显示相应的照片并且微调按钮和滚动条的输入可以相互更新。
图6-3 程序运行界面 6.2 任务6-1我的电子相册程序——窗体与图片框 显示的照片文件存放在应用程序目录下文件名任意照片的张数任意。
只需单击“单击”按钮将会出现6-4所示的“再见”对话框单击“确定”按钮将退出应用程序。
图6-4 “再见”对话框 6.2 任务6-1我的电子相册程序——窗体与图片框 窗体有一个事件Load该事件在窗体加载时发生故为了使
程序刚开始执行时就显示出欢迎对话框可在该事件过程中调用InputBox函数来实现。
窗体有一个名为Closing的事件该事件在窗体关闭时发生因此可在该事件中调用MsgBox函数显示出“再见”对话框。
显示照片可使用PictureBox控件图片框控件为使照片填满图片框控件必须设置图片框控件的SizeMode属性值为StretchImage并且在窗体刚加载时或改变大小时把图片框的大小设置与窗体的大小一致。
当窗体的大小发生改变时将会发生窗体的Resize事件因此可以在该事件中重新设置图片框的大小。
为了显示当前文件夹下的多张照片可设置一个字符串数组用来存放所有照片的文件名并通过Directory类的GetFiles方法获得所有照片的文件名。
通过序号显示照片时只需把序号值减1作为存放照片文件名的数组元素的下标对应的元素值就是要显示的照片文件名通过程序把该照片文件在图片框中显示出来即可。
为实现HScrollBar控件水平滚动条控件与NumericUpDown控件微调控件的相互更改可在NumericUpDown控件的ValueChanged事件中把它的Value属性值赋值给HScrollBar控件的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”。
然后执行【项目】→【Task6_1属性】命令在出现的“Task6_1属性页”对话框中把“启动对象”设置为“frmPhoto” 4.对照程序设计界面为窗体添加控件并设置控件的属性。
控件的属性设置如表6-1所示 6.2 任务6-1我的电子相册程序——窗体与图片框 表6-1 任务6-1控件属性设置及其功能 控件名 属性名 属性值 说明 PictureBox1Picture Box控件 BorderStyle Dock Fixed3D Bottom 显示相片 Panel1Panel控件 BorderStyle Fixed3D 作为除图片框之外的其它控件的容器 Label1 Text quot请输入照片序号quot 提示 NumericUpDown1NumericUpDown控件 Minimum 1 输入要显示的相片的序号 HScrollBar1HScrollBar控件 Minimun 1 输入要显示的相片的序号 Button1 Text quot退出quot 单击将退出程序 6.2 任务6-1我的电子相册程序——窗体与图片框 PictureBox控件又称图片框控件在工具箱中的图标为“”常用于显示照片 Panel控件又称面板控件在工具箱中的图标为“”常用于作为其它控件的容器 NumericUpDown控件又称数字微调按钮输入控件在工具箱中的图标为“”常用于输入数值型数据 HScrollBar控件又称水平滚动条控件在工具箱中的图标为“”常用于输入数值型数据 说明 任务 4 在
代码“public class frmphoto”的上面输入如下语句。
Imports System.io 说明: 这条语句的作用是引入命名空间“System.io”在该命名空间中有许多与文件有关的类本任务中要取得在当前文件夹中存放的照片文件名需用到“Directory”类因此需把该命名空间引入到程序中来。
任务 5 定义模块级变量或数组如下。
Dim ClientName As String 存放用户姓名 Dim PhotoName As String ‘存放在当前文件夹中取出的照片文件名 Dim PicCount As Integer 存放当前文件夹中的照片数量 任务 6 编写窗体的Load事件过程
代码如下 Private Sub frmPhoto_LoadByVal sender As System.Object ByVal e As System.EventArgs Handles MyBase.Load Dim PFName As String 循环直到用户输入姓名 Do ClientName InputBoxquot嗨朋友欢迎您来到我的电子相册quot quot欢迎quot quotquot Loop While LenTrimClientName 0 把用户的姓名作为欢迎词的一部分显示在标题栏上 Me.Text quot欢迎quot amp ClientName amp quot来到我的相册quot PictureBox1.Left 0 图片框靠左上角显示 PictureBox1.Top 0 图片框在视觉上充满整个窗体除了Panel1占据的空间外 PictureBox1.Height Me.ClientSize.Height - Panel1.Height PPictureBox1.Width Me.ClientSize.Width hotoName Directory.GetFilesApplication.StartupPath quot.jpgquot PicCount PhotoName.Length 获得照片数量 NumericUpDown1.Maximum PicCount NumericUpDown1的Maximun属性值设为照片数 HScrollBar1.Maximum PicCount 把HScrollBar1的Maximun属性值设为照片数 上述两条语句执行后就可以通过NumericUpDown1和HScrollBar1控件输入任意照片的照片号 PictureBox1.Image Image.FromFilePhotoName0 显示第一幅照片 End sub End Sub 任务说明 1程序中首先通过一个循环让用户输入姓名然后通过设置图片框的相应属性使图片框填满窗体接着获取当前文件夹中存放的所有照片文件名并存放到数组PhotoName中通过该数组的长度就可以存得照片的数量再通过照片的数量设置水平滚动条控件和微调按钮输入文本框能够输入的最大值最后把第一幅照片显示出来。
2程序中“PhotoName Directory.GetFilesApplication.StartupPath quot.jpgquot”语句中的GetFiles是Directory类的一个方法用来获取指定文件夹中的文件名并返回一个由文件名填充的字符串数组。
语句中的“Application.StartupPath”代表的是应用程序启动文件夹路径“quot.jpgquot”表示只选取扩展名为jpg的文件 3语句“PictureBox1.Image Image.FromFilePhotoName0”用来把数组元素PhotoName0存放的照片文件名对应的照片显示在PictureBox1图片框控件中。
PictureBox控件常用于图形设计和图像处理应用程序在该控件中可以加载的图像文件格式有位图文件.Bmp、图标文件.ICO、图元文件.wmf、.JPEG和.GIF文件。
该控件主要有以下
常用属性 ①Image属性该属性用来设置控件要显示的图像。
为把文件中的图像加载 到图片框中通常可采用以下三种方式。
设计时单击Image属性在其后将出现【…】按钮单击该按钮将出现一个【打开】对话框在该对话框中找到相应的图形文件后按【确定】按钮 产生一个Bitmap类的实例并赋值给Image属性。
形式如下 Dim BP As Bitmap 定义一个Bitmap类的对象 BP New BitmapquotP1.JPGquot 根据文件生成Bitmap类的实例 PictureBox1.Image BP 把Bitmap对象赋值给图片框的Image属性 通过Image.FromFile方法直接从文件中加载。
形式如下 PictureBox对象名.ImageImage.FromFile图像文件名 ②SizeMode属性该属性用来决定图像的显示模式。
其取值有四种情况取值 及含义如表6-2所示。
各种模式下的图片显示样式如图6-5所示。
表6-2 SizeMode属性的取值及其含义 属 性 值 含 义 PictureBoxSizeMode.AutoSize 调整 PictureBox 大小使其等于所包含的图像大小。
PictureBoxSizeMode.CenterImage 如果PictureBox比图像大则图像将居中显示。
如果图像比PictureBox大则图片将居于PictureBox中心而外边缘将被剪裁掉。
PictureBoxSizeMode.Normal 图像被置于PictureBox的左上角。
如果图像比包含它的PictureBox大则该图像将被剪裁掉。
PictureBoxSizeMode.StretchImage PictureBox中的图像被拉伸或收缩以适合PictureBox的大小。
图6-5 图片框显示模式示例 任务 7 编写窗体的Closing事件过程
代码如下。
Private Sub frmPhoto_ClosingByVal sender As Object ByVal e As System.ComponentModel.CancelEventArgs Handles MyBase.Closing MsgBoxquot欢迎您再次来到我的相册再见quot quot再见quot End Sub 编写窗体的Resizing事件过程
代码如下。
Private Sub frmPhoto_ResizeByVal sender As Object ByVal e As System.EventArgs Handles MyBase.Resize PictureBox1.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属性赋值使之填满整个窗体。
这样程序运行时用户改变窗体的大小照片的大小也相应地变化。
2ClientSize是窗体的一个属性其作用是用户区的大小。
窗体的属性有很多下面着重介绍窗体的常用属性。
Name属性用来获取或设置窗体的名称在应用程序中可通过该属性来引用窗体。
WindowState属性用来获取或设置窗体的窗口状态。
取值有三种FormWindowState.Normal窗体正常显示、FormWindowState.Minimized窗体以最小化形式显示和FormWindowState.Maximized窗体以最大化形式显示。
StartPosition属性用来获取或设置运行时窗体的起始位置。
其取值及含义如表6-3所示。
默认的起始位置是 FormStartPosition.WindowsDefaultLocation。
表6-3 窗体的起始位置取值及其含义 取值 含义 FormStartPosition.CenterParent 窗体在其父窗体中居中。
FormStartPosition.CenterScreen 窗体在屏幕上居中其尺寸在窗体大小中指定。
FormStartPosition.Manual 窗体的位置和大小将决定其起始位置。
FormStartPosition.WindowsDefaultBounds 窗体定位在 Windows 默认位置其边界也由 Windows 默认决定。
FormStartPosition.WindowsDefaultLocation 窗体定位在 Windows 默认位置其尺寸在窗体大小中指定。
该属性是一个字符串属性用来设置或返回在窗口标题栏中显示的文字。
用来获取或设置窗体的宽度。
用来获取或设置窗体的高度。
用来获取或设置窗体的左边缘的 x 坐标以像素为单位。
函数的属性: Top ControlBox MaximizeBox MinimizeBox 用来获取或设置窗体的上边缘的 y 坐标以像素为单位。
用来获取或设置一个值该值指示在该窗体的标题栏中是否显示控制框。
值为True时将显示控制框值为False时不显示控制框。
用来获取或设置一个值该值指示是否在窗体的标题栏中显示最大化按钮。
值为True时显示最大化按钮值为False时不显示最大化按钮。
用来获取或设置一个值该值指示是否在窗体的标题栏中显示最小化按钮。
值为True时显示最小化按钮值为False时不显示最小化按钮。
函数的属性: AcceptButton属性该属性用来获取或设置一个值该值是一个按钮的名称当用户按 ENTER 键时就相当于单击了窗体上的该按钮。
CancelButton属性该属性用来获取或设置一个值该值是一个按钮的名称当用户按ESC键时就相当于单击了窗体上的该按钮。
Modal属性该属性用来设置窗体是否为有模式显示窗体。
如果有模式地显示该窗体该属性值为 True 否则为 False。
当有模式地显示窗体时用户只能和模式窗体进行交互。
必须隐藏或关闭模式窗体通常是响应某个用户操作然后才能与另一窗体进行交互。
有模式显示的窗体通常用作应用程序中的对话框。
ActiveControl属性用来获取或设置容器控件中的活动控件。
窗体也是一种容器控件。
ActiveMdiChild属性用来获取多文档界面MDI的当前活动子窗口。
AutoScroll属性用来获取或设置一个值该值指示窗体是否实现自动滚动。
如果此属性值设置为 True则当任何控件位于窗体工作区之外时会在该窗体上显示滚动条。
另外当自动滚动打开时窗体的工作区自动滚动以使具有输入焦点的控件可见。
AcceptButton属性该属性用来获取或设置一个值该值是一个按钮的名称当用户按 ENTER 键时就相当于单击了窗体上的该按钮。
CancelButton属性该属性用来获取或设置一个值该值是一个按钮的名称当用户按ESC键时就相当于单击了窗体上的该按钮。
Modal属性该属性用来设置窗体是否为有模式显示窗体。
如果有模式地显示该窗体该属性值为 True 否则为 False。
当有模式地显示窗体时用户只能和模式窗体进行交互。
必须隐藏或关闭模式窗体通常是响应某个用户操作然后才能与另一窗体进行交互。
有模式显示的窗体通常用作应用程序中的对话框。
函数的属性: ActiveControl属性用来获取或设置容器控件中的活动控件。
窗体也是一种容器控件。
ActiveMdiChild属性用来获取多文档界面MDI的当前活动子窗口。
AutoScroll属性用来获取或设置一个值该值指示窗体是否实现自动滚动。
如果此属性值设置为 True则当任何控件位于窗体
工作区之外时会在该窗体上显示滚动条。
另外当自动滚动打开时窗体的工作区自动滚动以使具有输入焦点的控件可见。
BackColor属性用来获取或设置窗体的背景色。
BackgroundImage属性用来获取或设置窗体的背景图像。
Enabled属性用来获取或设置一个值该值指示控件是否可以对用户交互作出响应。
如果控件可以对用户交互作出响应则为 True否则为 False。
默认值为 True。
Font属性用来获取或设置窗体或控件显示的文本的字体。
ForeColor属性用来获取或设置窗体或控件的前景色。
IsMdiChild属性获取一个值该值指示该窗体是否为多
文档界面 MDI 子窗体。
值为True时是子窗体值为False时不是子窗体。
IsMdiContainer属性获取或设置一个值该值指示窗体是否为多
文档界面 MDI 中的子窗体的容器。
值为True时是子窗体的容器值为False时不是子窗体的容器。
函数的属性: KeyPreview属性该属性用来获取或设置一个值该值指示在将按键事件传递到具有焦点的控件前窗体是否将接收该事件。
值为True时窗体将接收按键事件值为False时窗体不接收按键事件。
MdiChildren属性数组属性。
数组中的每个元素表示以此窗体作为父窗体的多文档界面 MDI 子窗体。
MdiParent属性该属性用来获取或设置此窗体的当前多文档界面 MDI 父窗体。
ShowInTaskbar属性该属性用来获取或设置一个值该值指示是否在 Windows 任务栏中显示窗体。
Visible属性该属性获取或设置一个值该值指示是否显示该窗体或控件。
值为True时显示窗体或控件值为False时不显示。
Capture属性如果该属性值为True则鼠标就会被限定只由此控件响应不管鼠标是否在此控件的范围内。
函数的属性: 3Load、Closing和Resizing均是窗体的事件名窗体能够响应的事件有很多下面介绍窗体常用的事件及其发生场合。
Load事件该事件在窗体加载到内存时发生即在第一次显 示窗体前发生。
Activated事件该事件在窗体激活时发生。
Deactivate事件该事件在窗体失去焦点成为不活动窗体时 发生。
Resize事件该事件在改变窗体大小时发生。
Paint事件该事件在重绘窗体时发生。
Click事件该事件在用户单击窗体时发生。
DoubleClick事件该事件在用户双击窗体时发生。
Closed事件该事件在关闭窗体时发生。
4语句中的“Panel1.Height”使用了Panel1控件的Height方法。
Panel控件通常作为面板存在用来容纳其它控件。
它除了具有Height、Top、Left、Width等常用属性以外还有一个重要属性Dock用来指出Panel控件停泊在哪个边上该属性的设置如图6-6所示可通过单击相应的方块来设置停泊属性。
图6-6 Dock属性的设置 任务 9 编写“退出”按钮的Click事件过程
代码 : 说明 程序中语句“Me.Close”中的Me代表的是当前窗体Close是窗体的一个方法其作用是关闭窗体。
窗体的方法也有很多下面介绍一些窗体的最常用方法。
方法方法 Show Show 该方法的作用是把窗体隐藏出来其调用格式为该方法的作用是把窗体隐藏出来其调用格式为 窗体名窗体名.Hide.Hide Refresh Refresh 该方法的作用是刷新并重画窗体其调用格式为该方法的作用是刷新并重画窗体其调用格式为 窗体名窗体名.Refresh.Refresh Activate 该方法的作用是激活窗体并给予它焦点。
其调用格该方法的作用是激活窗体并给予它焦点。
其调用格 窗体名窗体名.Activate.Activate Hide Hide 该方法的作用是把窗体隐藏出来其调用格式为该方法的作用是把窗体隐藏出来其调用格式为 窗体名窗体名.Hide.Hide 该方法的作用是关闭窗体。
其调用格式为该方法的作用是关闭窗体。
其调用格式为 窗体名窗体名.Close.Close Close Close 该方法的作用是将窗体显示为模式对话框。
其调该方法的作用是将窗体显示为模式对话框。
其调 窗体名窗体名.ShowDialog.ShowDialog ShowDialog ShowDialog 任务 10 运行界面将会出现如图6-2所示的对话框用户输入姓名后单击“确定”按钮将会出现如图6-3所示程序运行界面改变窗体的大小照片将会相应地改变大小。
单击“退出”按钮将会出现如图6-4的对话框单击“确定”按钮程序退出。
图6-2 程序运行时出现的“欢迎”对话框 图6-3 程序运行界面 图6-4 “再见”对话框 任务 11 编写编写NumericUpDown1NumericUpDown1控件的控件的ValueChangedValueChanged事件过程代事件过程
代码如下码如下 Private Sub NumericUpDown1_ValueChangedByVal sender As System.Object ByVal e Private Sub NumericUpDown1_ValueChangedByVal sender As System.Object ByVal e As System.EventArgs Handles NumericUpDown1.ValueChangedAs System.EventArgs Handles NumericUpDown1.ValueChanged Static cs As Integer 0 Static cs As Integer 0 用来判断是否是第一个执行该事件过程的
代码用来判断是否是第一个执行该事件过程的
代码 .