【VB开源代码栏目提醒】:以下是网学会员为您推荐的VB开源代码-VBNET程序设计实用教程6XL - 实验数据,希望本篇文章对您学习有所帮助。
第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控件BorderStyleDockFixed3DBottom显示相片Panel1Panel控件BorderStyleFixed3D作为除图片框之外的其它控件的容器Label1Textquot请输入照片序号quot提示NumericUpDown1NumericUpDown控件Minimum1输入要显示的相片的序号HScrollBar1HScrollBar控件Minimun1输入要显示的相片的序号Button1Textquot退出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.LoadDim PFName As String循环直到用户输入姓名DoClientName InputBoxquot嗨朋友欢迎您来到我的电子相册quot quot欢迎quot quotquotLoop While LenTrimClientName 0把用户的姓名作为欢迎词的一部分显示在标题栏上Me.Text quot欢迎quot amp ClientName amp quot来到我的相册quotPictureBox1.Left 0 图片框靠左上角显示PictureBox1.Top 0图片框在视觉上充满整个窗体除了Panel1占据的空间外PictureBox1.Height Me.ClientSize.Height -Panel1.HeightPPictureBox1.Width Me.ClientSize.WidthhotoName Directory.GetFilesApplication.StartupPath quot.jpgquotPicCount PhotoName.Length 获得照片数量NumericUpDown1.Maximum PicCount NumericUpDown1的Maximun属性值设为照片数HScrollBar1.Maximum PicCount 把HScrollBar1的Maximun属性值设为照片数上述两条语句执行后就可以通过NumericUpDown1和HScrollBar1控件输入任意照片的照片号PictureBox1.Image Image.FromFilePhotoName0 显示第一幅照片End subEnd 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.StretchImagePictureBox中的图像被拉伸或收缩以适合PictureBox的大小。
图6-5 图片框显示模式示例任务7编写窗体的Closing事件过程
代码如下。
Private Sub frmPhoto_ClosingByVal sender As Object ByVal e As System.ComponentModel.CancelEventArgs Handles MyBase.ClosingMsgBoxquot欢迎您再次来到我的相册再见quot quot再见quotEnd Sub编写窗体的Resizing事件过程
代码如下。
Private Sub frmPhoto_ResizeByVal sender As Object ByVal e As System.EventArgs Handles MyBase.ResizePictureBox1.Left 0 图片框靠左上角显示PictureBox1.Top 0图片框在视觉上充满整个窗体除了Panel1占据的空间外PictureBox1.Height Me.ClientSize.Height -Panel1.HeightPictureBox1.Width Me.ClientSize.WidthEnd 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 坐标以像素为单位。
函数的属性:TopControlBox 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.HideRefresh Refresh 该方法的作用是刷新并重画窗体其调用格式为该方法的作用是刷新并重画窗体其调用格式为窗体名窗体名.Refresh.RefreshActivate该方法的作用是激活窗体并给予它焦点。
其调用格该方法的作用是激活窗体并给予它焦点。
其调用格窗体名窗体名.Activate.ActivateHide Hide 该方法的作用是把窗体隐藏出来其调用格式为该方法的作用是把窗体隐藏出来其调用格式为窗体名窗体名.Hide.Hide该方法的作用是关闭窗体。
其调用格式为该方法的作用是关闭窗体。
其调用格式为窗体名窗体名.Close.CloseClose Close 该方法的作用是将窗体显示为模式对话框。
其调该方法的作用是将窗体显示为模式对话框。
其调窗体名窗体名.ShowDialog.ShowDialogShowDialog ShowDialog 任务10运行界面将会出现如图6-2所示的对话框用户输入姓名后单击“确定”按钮将会出现如图6-3所示程序运行界面改变窗体的大小照片将会相应地改变大小。
单击“退出”按钮将会出现如图6-4的对话框单击“确定”按钮程序退出。
图6-2 程序运行时出现的“欢迎”对话框图6-3 程序运行界面图6-4 “再见”对话框任务11编写编写NumericUpDown1NumericUpDown1控件的控件的ValueChangedValueChanged事件过程代事件过程
代码如下码如下Private Sub NumericUpDownPrivate Sub NumericUpDown11_ValueChangedByVal sender As System.Object ByVal e _ValueChangedByVal sender As System.Object ByVal e As System.EventArgs Handles NumericUpDownAs System.EventArgs Handles NumericUpDown11.ValueChanged.ValueChangedStatic cs As Integer Static cs As Integer 0 0 用来判断是否是第一个执行该事件过程的
代码用来判断是否是第一个执行该事件过程的
代码If cs ltgt If cs ltgt 0 0 Then Then 如果不是第一次执行该事件过程
代码将显示图片如果不是第一次执行该事件过程
代码将显示图片PictureBoxPictureBox11.Image Image.FromFilePhotoNameNumericUpDown.Image Image.FromFilePhotoNameNumericUpDown11.Value .Value --11使水平滚动条的值与使水平滚动条的值与NumericUpDownNumericUpDown11.Value.Value的值一致的值一致HScrollBarHScrollBar11.Value NumericUpDown.Value NumericUpDown11.Value .Value End IfEnd Ifcs cs 1 1 执行一次后执行一次后Cs Cs 变量为变量为11End SubEnd Sub说明11由于在初始化时要发生一次“由于在初始化时要发生一次“ValueChanged”ValueChanged”事件在此时若访问其事件在此时若访问其它控件将会出现错误。
因此在本事件过程中定义了一个静态变量它控件将会出现错误。
因此在本事件过程中定义了一个静态变量cscs初始值初.