单元三 常用控件的使用
[学习目标]初步掌握VB.NET中常用标准控件的主要属性、事件和方法的有关概念;通过实例初步学会 Button、TextBox、ComboBox、ListBox、CheckedListBox RadioButton、CheckBox、RichTextBox、 HscrollBar、VscrollBar、Timer、DateTimePicker 、ProgressBar、TrackBar的基本使用,并能应用到实际的程序设计中。
一个VB.NET的应用程序离不开用户界面,在用户界面上需要使用各种不同的控件以便与用户进行交互。为此,VB.NET提供了功能强大的各种控件供开发人员使用,本章将介绍VB.NET中常用的一些典型控件的功能、属性、事件及方法。
3.1 基本控件的使用
本案例是制作一个用户登录界面(图3-1),当用户输入了用户帐号和用户密码后,单击"确定"按钮,程序进行识别,如果输入正确,显示欢迎信息;否则,提示输入错误。单击"重置"按钮,则清除文本框中的内容,用户可重新输入。
用户在输入密码时,相关文本框中的字符以"*"出现。当用户帐号或用户密码不正确时显示输入错误信息。本例对错误对象不进行识别,学习了流程控制语句后,可完成此功能。
[技能目标]
1. 掌握标签控件( Label)、按钮控件(Button)和文本框控件(TextBox)常用的属性、事件和方法。
2. 掌握标签控件、命令按钮控件和文本框控件的使用
[操作要点与步骤]
(1)新建项目"Vbnet3-1"
单击"文件"菜单,在出现的下位菜单中,单击"新建",再单击"新建项目",新建一个项目。项目存放在"D:/VB.net"下,项目名取"VBnet3-1"。项目类型选择"Visual Basic项目"、模板选择"Windows应用程序",项目名与位置按以上要求改写,其他选默认值,单击"确定"按钮。
(2)在窗体中建立各相关控件(图3-2)。
单击控件箱中"Windows窗体"选项卡,在相关的"Windows窗体"选项卡中,双击"Label"控件,在窗体中出现了"Label1"对象,拖放"Label1"对象到适当位置,采用相同的方法,在窗体上建立其余各对象。
(3)设置窗体中各对象的属性
在窗体中选中"Label1"对象,在相应的属性窗口中,将它的"Text"属性,设置为"用户帐号:",采用相同的方法,将各对象的属性设置如表3-1。
表3-1 对象属性设置
Label1 Text 用户帐号:
Label2 Text 用户密码:
TextBox1 Text
TextBox2 Text
PasswordChar *
Button1 Text
Button2 Text
(4)编写程序代码
各窗体对象的相关属性设置完成后,对Button1和Button2对象的Click事件编写代码。在窗体上双击Button1对象,进入代码编写窗口,输入相应代码,同样方法编写Button2的代码。具体代码如下:
Private Sub Button1_Click(ByVal sender As System.Object,ByVal e As System.EventArgs) _
Handles Button1.Click
TextBox1.Text = ""
TextBox2.Text = ""
End Sub
Private Sub Button2_Click(ByVal sender As Object,ByVal e As System.EventArgs) Handles Button2.Click
If TextBox1.Text = "user01" And TextBox2.Text = "user@01" Then
MsgBox("欢迎进入本系统!")
Else
TextBox1.Text = ""
TextBox2.Text = ""
End If
End Sub
本例中预设的用户名为"user01",密码为"user@01"。MsgBox()的作用是显示相关信息,我们将在后续课程知识点5-2-2中学习其具体用法。
[相关知识]
标签(Label)控件通常用于在窗体中显示固定的信息,用于标识有关控件的名称和用途,标签中显示的信息无法由键盘修改其内容。标签(Label)控件常用的属性有:
(1)Text属性:显示Label控件对象中的文本。Text属性的最大长度可设置为1024字节。
(2)TextAlign属性:用于设置Label控件对象中文本的对齐方式。可使用图视的方式设置(图3-3),属性值有:TopLeft、TopCenter、Topright、MiddleLeft、MiddleCenter、MiddleRight、BoottomLeft、BottomCenter和BottomRight。默认值为TopLeft。
(3)Image属性:用于设置Label控件对象的背景图像。
(4)Autosize属性:用于指定是否随Text的内容长度自动调整标签宽度。若该属性值为True,表示控件宽度会自动调整。若为False,则控件宽度固定。
(5)BorderStyle属性:用于设置Label控件对象的边框的外观。有None、Fixed3D和FixedSingle,默认值为None。
命令按钮(Button)控件在Windows程序中有着广泛的使用。在程序运行后,当用户单击某命令按钮时就执行相关的事件过程。
1. 常用的属性
(1)FlatStyle属性:用于设置(Button)控件对象的外观风格。有Flat、Popup、Standard和System四个属性值。默认的属性值为Standard。
(2)Text属性:显示在按钮(Button)对象上的文本。
(3)TextAlign属性:用于设置按钮(Button)控件对象中文本的对齐方式。也可使用图视的方式设置(图3-3),其属性值与标签相同,但默认值为BottomCenter。
(4)Image属性:用于设置按钮(Button)控件对象的背景图像。
2. 常用的事件
命令按钮的最常用事件是Click事件:单击命令按钮时将触发按钮的Click事件并执行写入Click事件过程的代码。
"单击"按钮的过程中也将产生MouseMove、MouseLeave、Mousedown和MouseUp等事件。Button控件对象的单击事件发生的顺序为;MouseMove、Mousedown 、Click、MouseUp、MouseLeave。
文本框(TextBox)控件是Windows窗体上主要的输入和输出的对象,它可以显示程序的相关信息,也可以通过它输入相关的信息与程序交互。
1. 常用的属性
(2)Multline属性:用于设置多行显示方式。默认值为False,只显示单行文本。当设置属值为True时,允许以多行方式显示。
(3)PasswordChar属性;指定显示在文本中的字符,用于隐藏输入的文字。无论用户在文本框中输入什么字符,文本框中都显示PasswordChar属性指定的字符。
(4)ScrollBar属性:是否为文本框加上滚动条,该属性只有当MultiLine属性为True时才有效。它可以设置None(无)、Horizontal(水平滚动条)、Vertical(垂直滚动条)、Both(二者都有)四种取值。
(5)CharacterCasing属性:获取或设置文本框控件是否在字符输入时修改其大小写格式,其取值有:Normal(大小写保持不变)、Upper(全部转变成大写)、Lower(全部转换为小写)。
2. 常用的事件
文本框(TextBox)控件的常用事件有TextChanged(文本框内容改变)、GotFocus(获得焦点)、LostFocus(失去焦点)等。
【要点分析】
TextChanged事件是TextBox非常重要的事件,当文本框的内容发生改变时触发该事件。常用于对输入内容的过滤、限制与校验等。例如:
在窗体上加入一个TextBox1控件,将其MultiLine设置为True,CharacterCasing设置为Upper;再加入一个标签Label1,将其BorderStyle属性设置为FixedSingle。接着在TextBox1的TextChanged事件中输入下列代码:
Label1.Text=TextBox1.Text
程序运行后,在文本框中输入的任何字母都被转换成大写,而且该输入又被实时地送入了标签中显示。
在测试时,注意用户名和密码的大小写状态,本案例是区分大小写的。
3.2 批量数据选择控件使用
【案例3-2】学生信息输入界面
本案例是制作一个用户信息输入界面,当用户在用户信息输入界面中输入了学生的基本信息学号、姓名、性别、团员否、出生年月和班级后,在选择显示的项目框中选择所要显示的内容,单击"显示信息"按钮后,在信息显示框中显示相关的信息。本例综合运用了多种控件,本节重点介绍批量数据选择控件组合框ComboBox、列表框ListBox和复选列表框CheckedListBox的相关知识,其余控件将在以后各节中进行介绍。
[技能目标]
1. 掌握组合框ComboBox控件、列表框ListBox控件和复选列表框CheckedListBox控件常用的属性、事件和方法。
2. 掌握组合框ComboBox控件、列表框ListBox控件和复选列表框CheckedListBox控件的使用
[操作要点与步骤]
1. 新建项目"Vbnet3-2"
单击"文件"菜单,在出现的下位菜单中,单击"新建",再单击"新建项目",新建一个项目。项目存放在"D:/VB.net"下,项目名取"VBnet3-2"。项目类型选择"Visual Basic项目"、模板选择"Windows应用程序",项目名与位置按以上要求改写,其他选默认值,单击"确定"按钮。
2. 在窗体中建立各相关控件,见图3-5。
图3-4 学生信息输入界面
图3-5 学生信息输入界面对象布局
3. 设置窗体中各对象的属性
在窗体中选中"Label1"对象,在相应的属性窗口中,将它的"Text"属性设置为"学号:",采用相同的方法,将各对象的属性设置如表3-1。
表3-1 对象属性设置
Label1 Text 学号:
Label2 Text 姓名:
Label3 Text 性别:
Label4 Text 团员否:
Label5 Text 出生年月:
Label6 Text 班级:
Label7 Text 学生基本信息:
Label8 Text 选择显示的项目:
Label9 Text 显示信息:
TextBox1 Text
ComboBox1 Items
ComboBox2 Items
CheckedListBox1 Items
ListBox1 Items
Button1 Text 显示信息
4. 编写程序代码
各窗体对象的相关属性设置完成后,对Button1对象的Click事件编写相应的代码。在窗体上双击Button1对象,进入代码编写窗口,输入相应代码。具体代码如下:
Private Sub Button1_Click(ByVal sender As System.Object,ByVal e As System.EventArgs) _
Handles Button1.Click
If CheckedListBox1.GetItemChecked(0) Then
ListBox1.Items.Add("学号:" + ComboBox2.Text)
End If
If CheckedListBox1.GetItemChecked(1) Then
If TextBox1.Text = "" Then
MsgBox("姓名不能为空!")
Exit Sub
End If
ListBox1.Items.Add("姓名:" + TextBox1.Text)
End If
If CheckedListBox1.GetItemChecked(2) Then
If RadioButton1.Checked Then
ListBox1.Items.Add("性别:男")
Else
ListBox1.Items.Add("性别:女")
End If
End If
If CheckedListBox1.GetItemChecked(3) Then
If CheckBox1.Checked Then
ListBox1.Items.Add("团员")
Else
ListBox1.Items.Add("非团员")
End If
End If
If CheckedListBox1.GetItemChecked(4) Then
ListBox1.Items.Add("出生年月:")
ListBox1.Items.Add(DateTimePicker1.Value.Date)
End If
If CheckedListBox1.GetItemChecked(5) Then
ListBox1.Items.Add("班级:")
ListBox1.Items.Add(ComboBox1.Text)
End If
End Sub
[相关知识]
列表框用于显示可滚动的项目列表,在列表框中使用者可选择一个或多个项目,使用者不能直接对列表中的项目进行修改,但编程人员可以使用其相关的方法对项目列表进行增删。
1. 常用的属性
(1)SelectedIndex属性:用于设置和返回列表中当前所选项目的位置。本属性只在运行时可用。当前选定的是第一个项目时,则属性的返回值为0;当前选定的是第二个项目时,则属性的返回值为1,依此类推。
(2)Items属性:用于返回包含列表项目的一个集合。该属性集合非常重要,利用它可以获得列表的项目数(Count属性)、指定项的列表内容(Item属性)、插入列表项(Add)、删除列表项(Remove)等等。
(3)SelectionMode属性:设置列表框中的选择项目的方式,有四种取值:MultiExtended(类似于Windows的扩展多选)、MultiSimple(简单多选)、One(只能选一个)、None(不能选择)。
(4)Sorted属性:用于设置列表中的项目是否排序。
2. 常用的事件
列表框中的常用事件有Click事件、DoubleClick(双击)事件与SelectIndexChanged(选定项目序号发生改变)。
3. 常用的方法
例:"列表框名.Items.Clear"将删除指定列表框中的所有项目:
(2)Add方法:用于向列表中添加项目。添加项目是通过向集合Items添加元素的方式实现的。
例:向列表框中添加项目:
列表框名.Items.Add("string")
(2)Remove方法:删除列表中的项目。同样删除项目也是通过删除集合Items元素的方式实现的。
例:删除列表框中的项目:
列表框名.Items.Remove("string"|Index)
组合框实际上相当于列表框和文本框功能的组合,一般情况下既可以从下拉列表中选择项目,也可以直接输入文本。
1. 常用的属性
组合框的属性与列表框的属性非常相似,但其没有SelectionMode属性。组合框有DropDownStyle属性,用于设置组合框式样,其取值如下:
(1)DropDown:一般组合框,既可以单击下拉箭头进行选择,也可以直接输入。
(2)Simple:简单组合框,布局上相当于文本框与列表框的组合。
(3)DropDownList:下拉列表框,只能通过单击下拉箭头进行选择。
2. 常用的事件
组合框中的最常用事件也是SelectedIndexChanged,当用户所选定的内容发生变化时触发。
3. 常用的方法
组合框中常用的方法与列表框相同,这里不再详述。
组合框与列表框有许多相似的地方,在很多情况下二者可以互换使用。但在选择时还是应该注意以下两点:
1. 如果希望用户只能在限定的项目中进行选择,优先选用列表框。因为组合框一般情况下可以接收用户的输入。
2. 如果界面的空间受到限制,则优先选用组合框。因为组合框可以节省空间,尤其是选择项目较多时。
所以,到底选择组合框还是列表框,需要根据功能要求与界面设置等多种因素综合考虑,并没有严格的区分。
复选列表框控件在列表框控件的基础上增加了复选功能,是列表框的扩展,因此其使用与列表框也非常类似。它可以实现列表框可以实现的几乎所有的功能,而且在每个项目左边还有一个标明是否选中的复选标记。其不同之处是它不支持多选属性(SelectionMode),用户每次只能选择一个。但通过多次的选择可以标记多个项目(如图3-4所示)。
在复选列表框中,被标记项与被选中项是不一样的。被选中项呈高亮度显示,而被标记项只是在复选标记中有"√"。另外在复选列表框中只有多个被标记的项,而没有多个被选中的项。
1. 当需要访问CheckedListBox 控件中显示的被标记的数据时,可以循环访问 CheckedItems 属性中存储的集合,或者使用 GetItemChecked 方法逐句通过列表来确定已选中的项。GetItemChecked 方法采用项索引号作为参数,并返回 true 或 false。
每个项目边上的标记状态通过CheckState属性来设置:Checked(选中)、Indeterminate(不确定的)和Unchecked(未选中)。
2. 向复选列表框(CheckedListBox)控件中添加项目的方法中也多了一个是否被标记的参数:
复选列表框名.Items.add(Item as object,IsChecked as boolean)
复选列表框名.InsertItems(Index as integer,Value as boolean)
3. 设置与获取复选列表框中项目的"Checked"属性值的方法如下:
设置:复选列表框名.Setitemchecked(Index as integer,Value as boolean)
获取:复选列表框名.GetItemCheckSatae(Index as integer)
3.3 简单选择控件的使用
在应用程序中,单选按钮(RadioButton)和复选框CheckBox)是二个常用的控件,它们主要用于提供少量的数据供用户选择。
单选按钮(RadioButton)通常是以一组选项的形式出现,供用户在一组选项中选择其中的一个选项。用户在这一组选项中必须并且只能选中其中的一个选项。当用户选项中某个选项后,在该选项的左侧的圆圈中出现一个黑点,表示该选项被选中。
1. 常用的属性
Checked属性:用于表示当前的单选按钮(RadioButton)控件对象是否被选中。当属性值为True时,表示当前单选按钮(RadioButton)控件对象被选中。
2. 常用的事件
CheckedChanged事件:当单选按钮(RadioButton)的Checked属性值发生变化后,该事件被触发。
复选框为使用者提供了一组选择项,使用者可以选择其中的一个选项或多个选项,也可以都不选择。主要用于让使用者从多个选项中选择其中一项或多项。
1. 常用的属性
Checked属性、Text属性与单选按钮相同。另外复选框还有一个属性(ThreeState)用来设置复选框是否具有"不确定状态"
2. 常用的事件
CheckedChanged事件与单选钮相同。
3.4 RichTextBox控件的使用
【案例3-3】简单的文字处理程序
本案例是制作一个简单的文本阅读界面,窗体上有六个按钮(如图3-6),分别可以实现以下六个功能:
(1)"打开文件"按钮,当用户单击该命令按钮后,弹出一个"打开文件"对话框,用户可以选择所要打开的文件。本例中只允许打开"*.txt"类型的文件。
(2)"字体设置"按钮,当用户单击该命令按钮后,弹出一个"字体设置"对话框,用户可以对当前选择的文字对象进行字体的大小、字体字型、字体和字体效果的设置。
(3)"颜色设置"按钮,当用户单击该命令按钮后,弹出一个"颜色设置"对话框,用户可以对当前选择的文字对象进行字体颜色设置。
(4)"查找"按钮,当用户单击该命令按钮后,弹出一个"查找"对话框(见图3-7),在文本框中输入所要查找的文字,单击"确定"按钮后,计算机会自动找到有关文字并以反显的方式显示。
(5)"对象信息"按钮,它能将你选中的文字的起始位置、长度和所选文字在对话框中显示(图3-8)。
(6)"缩放"按钮,当用户单击该命令按钮后,弹出一个"缩放"对话框,用户可以输入所要缩放的倍数,单击"确定"按钮后,文本框中的文字将进行缩放。
[技能目标]
1. 掌握RichTextBox控件常用的属性、事件和方法。
2. 通过前面几个控件的学习,能够制作一个简单的文字处理软件。
图3-6 文本阅读界面
图3-7 "查找"对话框
(a) (b)
图 3-8 对象信息框
[操作要点与步骤]
1. 新建项目"Vbnet3-3"
单击"文件"菜单,在出现的下位菜单中,单击"新建",再单击"新建项目",新建一个项目。项目存放在"D:/VB.net"下,项目名取"VBnet3-3"。项目类型选择"Visual Basic项目"、模板选择"Windows应用程序",项目名与位置按以上要求改写,其他选默认值,单击"确定"按钮。
2.在窗体中建立各相关控件
单击控件箱中"Windows窗体"选项卡,双击"Button"控件,在窗体中出现了"Button1"对象,同理创建其余五个按钮对象,并对齐六个按钮对象;双击"Label"控件,拖放"Label1"对象到适当位置;双击"RichTextBox"控件,拖放"RichTextBox1"对象到合适位置;双击 "OpenFileDialog"、"ColorDialog"、"FontDialog"控件,相应的"OpenFileDialog1"、"ColorDialog1"、"FontDialog1"对象出现在编辑区的下方。见图3-9。
图3-9 文字处理程序界面各对象
3. 设置窗体中各对象的属性
在窗体中选中"Button1"对象,在其属性窗口中将"Text"属性值设置为"打开文件"。采用相同的方法,将各对象的属性设置如表3-4。
表3-3 对象属性设置
Button1 Text 打开文件
Button2 Text 字体设置
Button3 Text 颜色设置
Button4 Text 查找
Button5 Text 对象信息
Button6 Text 缩放
RichTextBox1 Text
HideSecection False
4. 编写程序代码
各窗体对象的相关属性设置完成后,对Button1、Button2、Button3、Button4、Button5、和Button6对象的Click事件,编写相应的代码。在窗体上逐个双击上述六个命令按钮对象,进入代码编写窗口,输入相应代码。具体代码如下:
Private Sub Button2_Click(ByVal sender As System.Object,ByVal e As System.EventArgs) _
Handles Button2.Click
FontDialog1.ShowDialog()
RichTextBox1.SelectionFont = FontDialog1.Font
End Sub
Private Sub Button3_Click(ByVal sender As System.Object,ByVal e As System.EventArgs) _
Handles Button3.Click
ColorDialog1.ShowDialog()
RichTextBox1.SelectionColor = ColorDialog1.Color
End Sub
Private Sub Button4_Click(ByVal sender As System.Object,ByVal e As System.EventArgs) _
Handles Button4.Click
Dim stringf As String
stringf = InputBox("输入查找的内容:","查找","",)
RichTextBox1.Find(stringf,RichTextBoxFinds.Reverse)
End Sub
Private Sub Button6_Click(ByVal sender As System.Object,ByVal e As System.EventArgs) _
Handles Button6.Click
Dim tsize As Single
tsize = InputBox("请输入显示比例:","显示比例",)
RichTextBox1.ZoomFactor = tsize
End Sub
Private Sub Button5_Click(ByVal sender As System.Object,ByVal e As System.EventArgs) _
Handles Button5.Click
MessageBox.Show("起始位置:" & RichTextBox1.SelectionStart & ",长度为:" _
& RichTextBox1.SelectionLength.ToString & Chr(13) & Chr(10) _
+ "所选文字为:" + RichTextBox1.SelectedText)
End Sub
Private Sub Button1_Click(ByVal sender As System.Object,ByVal e As System.EventArgs) _
Handles Button1.Click
OpenFileDialog1.Filter = "txt files (*.txt)|*.txt"
OpenFileDialog1.ShowDialog()
RichTextBox1.LoadFile(OpenFileDialog1.FileName,RichTextBoxStreamType.PlainText)
End Sub
1、 可用"对齐"菜单中的有关命令,进行多个对象的对齐和排列。
2、 可用"Ctrl+C"和"Ctrl+V",进行多个对象的快速创建,并可保证各对象大小一致。
[相关知识]
RichTextBox控件是基于TextBox控件开发的一种功能更为强大、使用更为方便的控件,它可以完成TextBox的一切功能,具有上百个属性与方法:设置字体、颜色和链接;从文件中加载文本、插入图片;进行撤消与重做等编辑操作。因此,该控件常用于提供文本显示和编辑的字处理程序中,如Windows的写字板或Office Word等软件中。
RichTextBox控件的主要应用简介如下:
1. 设置文本的格式
文本格式设置主要通过两个基本属性来进行:
(1)SelectionFont属性:
获取或设置控件中当前选定文本的字体、字型、字号和其它字体效果。
(2)SelectionColor属性:
获取或设置控件中当前选定的文本的颜色。
属性设置只适用于选中的文本,如果没有选中文本,将只影响当前插入点的文本。
2. 设置段落的格式
可以通过设置 SelectionBullet 属性将选定的段落设置为项目符号列表格式。也可以使用 SelectionIndent、SelectionRightIndent 和 SelectionHangingIndent 属性,设置相对于控件的左边界和右边界以及其他文本行左边界的段落缩进。
上述属性均影响包含选定文本的所有段落,还会影响在当前插入点之后键入的文本。例如,当用户在段落中选择一个词,然后调整缩进时,则新设置将应用于包含这个词的整个段落,还会应用于在选定的段落之后输入的任何段落。
3. 滚动条的控制
RichTextBox控件内置了滚动条控件,缺省情况下将会在需要时显示垂直滚动条与水平滚动条。当然用户也可以通过设置ScrollBar属性自定义。其属性值有None、Horizontal、Vertical、Both、ForcedHorizontal、ForcedVertical 和ForcedBoth七项,默认值为Both。
4. 文件管理
RichTextBox控件中可以显示无格式文本、Unicode无格式文本、RTF格式文本等。在控件中加载文件可以使用LoadFile方法。要加载一个文件,首先必须知道文件所在路径。一般来说需要使用通用对话框-OpenFileDialog来实现(具体说明见单元六)
控件内容经过编辑以后需要保存时,可以调用RichTextBox的SaveFile方法,当然还需要通用对话框-SaveFileDialog来确定文件保存的路径。保存文件时,RichTextBox控件支持无格式文本、Unicode无格式文本、Rich-Text格式、RTF格式等不同格式的文件类型。
RichText控件由于其属性、事件与方法众多,因而使用也比较复杂,本书只简单介绍其基本使用,更多的内容请参考联机手册或其它参考资料。
3.5 滚动条控件的使用
【案例3-4】滚动条控件的演示程序
本案例是一个滚动条控件的演示程序,在窗体中有三个滚动条分别控制RGB()函数的三个参数,当用户拖动滚动条时,三个文本框中的值会相应地自动变化,窗体的背景和三个标签控件的背景也会相应地变化。当用户在三个文本框中输入相关的值时,滚动条也会相应地变化,并且,窗体背景和三个标签控件的背景也会相应地变化。
[技能目标]
1. 掌握HscrollBar、VscrollBar控件常用的属性、事件和方法。
2. 掌握HscrollBar、VscrollBar控件的使用。
图3-10 滚动条控件的演示程序
[操作要点与步骤]
1. 新建项目"Vbnet3-4"
单击"文件"菜单,在出现的下拉菜单中,单击"新建",再单击"新建项目",新建一个项目,项目存放在"D:/VB.net"下,项目名取"VBnet3-4"。项目类型选择"Visual Basic项目"、模板选择"Windows应用程序",项目名与位置按以上要求改写,其他选默认值,单击"确定"按钮。
2. 在窗体中建立各相关控件,见图3-2
在控件箱 "Windows窗体"选项卡中双击"HscrollBar"控件,在窗体中出现了"HscrollBar1"对象,拖放"HscrollBar1"对象到适当位置,采用相同的方法,在窗体上共建立三个"HscrollBar"控件的对象。
利用类似的方法再分别建立三个标签控件和三个文本框控件。具体控件对象在窗体中的布局见图3-11。
图3-11 滚动条演示程序对象布局
3. 设置窗体中各对象的属性
在窗体中选中"Label1"对象,在相应的属性窗口中,将它的"Text"属性设置为"Red",采用相同的方法,设置窗体中各对象的相关属性。如表3-4。
表3-4 滚动条演示程序对象属性设置
Label1 Text Red
Label2 Text Green
Label3 Text Blue
TextBox1 Text 设为空
TextBox2 Text 设为空
TextBox3 Text 设为空
HscrollBar1 Maximum 255 RGB参数取值范围
HscrollBar2 Maximum 255
HscrollBar3 Maximum 255
4. 编写程序代码
各窗体对象的相关属性设置完成后,对HscrollBar1、HscrollBar2和HscrollBar3对象的Scroll事件和TextBox1、TextBox2和TextBox3对象的Changed事件编写代码。具体如下:
Private Sub Form1_Load(ByVal sender As System.Object,ByVal e As System.EventArgs) _
Handles MyBase.Load
Dim rgbValue As Integer
Dim rgbValueback As Integer
Dim r As Integer
Dim g As Integer
Dim b As Integer
r = 88
g = 88
b = 88
TextBox1.Text = r
TextBox2.Text = g
TextBox3.Text = b
rgbValue = RGB(r,g,b)
rgbValueback = RGB(255 - r,255 - g,255 - b)
Me.BackColor = System.Drawing.ColorTranslator.FromOle(rgbValue)
Label1.BackColor = System.Drawing.ColorTranslator.FromOle(rgbValue)
Label2.BackColor = System.Drawing.ColorTranslator.FromOle(rgbValue)
Label3.BackColor = System.Drawing.ColorTranslator.FromOle(rgbValue)
Label1.ForeColor = System.Drawing.ColorTranslator.FromOle(rgbValueback)
Label2.ForeColor = System.Drawing.ColorTranslator.FromOle(rgbValueback)
Label3.ForeColor = System.Drawing.ColorTranslator.FromOle(rgbValueback)
End Sub
Private Sub HScrollBar2_Scroll(ByVal sender As System.Object,_
ByVal e As System.Windows.Forms.ScrollEventArgs) Handles HScrollBar2.Scroll
Dim rgbValue As Integer
Dim rgbValueback As Integer
Dim r As Integer
Dim g As Integer
Dim b As Integer
r = HScrollBar1.Value
g = HScrollBar2.Value
b = HScrollBar3.Value
TextBox1.Text = r
TextBox2.Text = g
TextBox3.Text = b
rgbValue = RGB(r,255 - b)
Me.BackColor = System.Drawing.ColorTranslator.FromOle(rgbValue)
Label1.BackColor = System.Drawing.ColorTranslator.FromOle(rgbValue)
Label2.BackColor = System.Drawing.ColorTranslator.FromOle(rgbValue)
Label3.BackColor = System.Drawing.ColorTranslator.FromOle(rgbValue)
Label1.ForeColor = System.Drawing.ColorTranslator.FromOle(rgbValueback)
Label2.ForeColor = System.Drawing.ColorTranslator.FromOle(rgbValueback)
Label3.ForeColor = System.Drawing.ColorTranslator.FromOle(rgbValueback)
End Sub
Private Sub HScrollBar1_Scroll(ByVal sender As System.Object,_
ByVal e As System.Windows.Forms.ScrollEventArgs) Handles HScrollBar1.Scroll
Dim rgbValue As Integer
Dim rgbValueback As Integer
Dim r As Integer
Dim g As Integer
Dim b As Integer
r = HScrollBar1.Value
g = HScrollBar2.Value
b = HScrollBar3.Value
TextBox1.Text = r
TextBox2.Text = g
TextBox3.Text = b
rgbValue = RGB(r,255 - b)
Me.BackColor = System.Drawing.ColorTranslator.FromOle(rgbValue)
Label1.BackColor = System.Drawing.ColorTranslator.FromOle(rgbValue)
Label2.BackColor = System.Drawing.ColorTranslator.FromOle(rgbValue)
Label3.BackColor = System.Drawing.ColorTranslator.FromOle(rgbValue)
Label1.ForeColor = System.Drawing.ColorTranslator.FromOle(rgbValueback)
Label2.ForeColor = System.Drawing.ColorTranslator.FromOle(rgbValueback)
Label3.ForeColor = System.Drawing.ColorTranslator.FromOle(rgbValueback)
End Sub
Private Sub HScrollBar3_Scroll(ByVal sender As System.Object,_
ByVal e As System.Windows.Forms.ScrollEventArgs) Handles HScrollBar3.Scroll
Dim rgbValue As Integer
Dim rgbValueback As Integer
Dim r As Integer
Dim g As Integer
Dim b As Integer
r = HScrollBar1.Value
g = HScrollBar2.Value
b = HScrollBar3.Value
TextBox1.Text = r
TextBox2.Text = g
TextBox3.Text = b
rgbValue = RGB(r,255 - b)
Me.BackColor = System.Drawing.ColorTranslator.FromOle(rgbValue)
Label1.BackColor = System.Drawing.ColorTranslator.FromOle(rgbValue)
Label2.BackColor = System.Drawing.ColorTranslator.FromOle(rgbValue)
Label3.BackColor = System.Drawing.ColorTranslator.FromOle(rgbValue)
Label1.ForeColor = System.Drawing.ColorTranslator.FromOle(rgbValueback)
Label2.ForeColor = System.Drawing.ColorTranslator.FromOle(rgbValueback)
Label3.ForeColor = System.Drawing.ColorTranslator.FromOle(rgbValueback)
End Sub
Private Sub TextBox1_TextChanged(ByVal sender As System.Object,ByVal e As _
System.EventArgs) Handles TextBox1.TextChanged
HScrollBar1.Value = TextBox1.Text
End Sub
Private Sub TextBox2_TextChanged(ByVal sender As System.Object,ByVal e As _
System.EventArgs) Handles TextBox2.TextChanged
HScrollBar2.Value = TextBox2.Text
End Sub
Private Sub TextBox3_TextChanged(ByVal sender As System.Object,ByVal e As _
System.EventArgs) Handles TextBox3.TextChanged
HScrollBar3.Value = TextBox3.Text
End Sub
本例对窗体的Load事件编写了一段代码,其作用是在程序运行时预设RGB()函数的三个参数分别为88、88、88。程序运行后,当用户在文本框中输入参数时,必须是0到了255之间有数值,否则,程序会出错。
本例中标签控件对象的背景颜色和标签控件对象的字体颜色以互补色的方法出现。这样,保证当标签背景颜色变化时,始终可以看到标签字体。
[相关知识]
滚动条控件分为两种:垂直滚动条(VscrollBar)和水平滚动条(HscrollBar),其主要作用是方便地改变可视浏览区域的范围。一般来说,滚动条控件要和其他控件组合起来使用,当然也有些控件(如:ListBox、ComboBox、RichTextBox等)内置了滚动条控件,使用起来会更加方便。两种滚动条的属性、事件以及使用方法是相同的。
1. 常用的属性
(1)Value属性:用于设置或获取当前的滑块所在位置的值,其取值范围为大于Minimum属性值,并且小于Maximum属性值。
(2)Minimum属性:用于设置滚动条Value属性的最小取值。
(3)Maximum属性:用于设置滚动条Value属性的最大取值
(4)LargeChange属性:用于设置单击滑块与上下箭头之间区域一次,滑块所移动的距离。
(5)SmallChange属性:用于设置单击滚动条二端三角箭头时滑块的移动量。
2. 常用的事件
(1)Scroll事件:当拖动滚动条中的滑块时,发生Scroll事件。
(2)ValueChange事件:当单击滚动条二端三角箭头或滚动时,先发生ValueChange事件,再发生Scroll事件。
水平滚动条Hscroll控件和垂直滚动条Vscroll控件的属性、事件和方法完成一致,其区别仅在于它们在窗体中的显示方向不同。
3.6 定时器控件的使用
本案例在案例3-1基础上增加了限时登录功能。当程序运行后,用户必须在限制的时间内输入用户帐号和用户密码,单击"确定"按钮后,程序进行识别,如果输入正确,显示欢迎信息;如果用户没有在规定动作的时间内输入用户帐号和密码,系统在出现提示信息后将自动退出程序。
[技能目标]
2. 掌握定时器(Timer)控件的使用
3. 掌握DateTimePicker控件的使用
[操作要点与步骤]
1. 打开项目"Vbnet3-1"
单击"文件"菜单,在出现的下位菜单中,单击"打开",再单击"项目"。在"D:/VB.net"下,查到项目名为"VBnet3-1"的文件,单击"打开"按钮。
2. 在窗体中建立定时器(Timer)控件
单击控件箱中"Windows窗体"选项卡,,双击"Timer"控件,在窗体下方中出现了"Timer1"对象,同样方法添加Timer2对象。
3. 设置窗体中各对象的属性
在窗体中选中"Timer1"对象,在相应的属性窗口中设置属性值,如表3-5。
Timer1 Enable True
Interval 5000
Timer2 Enable False
Interval 2000
4. 编写程序代码
各窗体对象的相关属性设置完成后,对Timer1和Timer2对象的Tick事件编写代码。在窗体上分别双击Timer1对象,进入代码编写窗口,输入相应代码。具体代码如下:
Private Sub Timer1_Tick(ByVal sender As System.Object,ByVal e As System.EventArgs) _
Handles Timer1.Tick
Timer2.Enabled = True
MsgBox("时间已到!" & Chr(10) & Chr(13) & "请重新运行程序!")
End Sub
Private Sub Timer2_Tick(ByVal sender As System.Object,ByVal e As System.EventArgs) _
Handles Timer2.Tick
End
End Sub
【要点分析】
增加了限时登录功能的用户登录界面是较为常见的,用户登录时,必须在限定的时间内正确输入用户帐号和用户密码,目的是进一步增加系统的安全性。在本程序中创建了二个定时器,当程序运行5秒后弹出超时提示对话框,2秒后程序自动关闭。
程序运行后,只有第一个定时器开始运行,第二个定时器的Enable属性被设置为False。约5秒后(Interval属性设置为5000)第一个定时器被触发,第二个定时器的Enable属性被设置为True,第二个定时器开始运行,约再过2秒后(Interval属性设置为2000)程序自动退出。
[相关知识]
定时器控件用于在一定的时间间隔中产生相应的事件驱动。
1. 常用的属性
(1)Enable属性:用于设置定时器是否可用。当属性值为True时,定时器(Timer)控件可用。
(2)Interval属性:用于设置定时器的定时时间。属性值1000为1秒。
2. 常用的事件
定时器(Timer)控件的常用事件为Tick事件。当到达属性Intervar所设置的时间间隔时触发。
定时器(Timer)控件的Interval属性值1000大约为1秒,最大不超过10秒,若要进行较长时间的定时,则要设置一个变量,结合条件语句才能实现长时间的定时。
DateTimePicker控件是一个方便的日期和时间设定控件,使用该控件可以让使用者直观地进行日期和时间的设置。
1. 常用属性
(1)Value属性:设置和返回日期和时间值。
(2)MaxDate属性:用于设置最大日期。
(3)MinDate属性:用于设置最小日期。
(4)Enable属性:用于表示该控件是否可用。
(5)ShowUpDown属性:用于决定是否设置该控件的上下按钮。
(6) Format属性:用于设置显示的格式(时间格式、长日期格式、短日期格式和自自定义格式)
2. 常用的事件
ValueChanged事件:当该控件的Value值发生变化时,触发该事件。此外,该控件还具有MouseUp、MouseDown、MouseLeave、GotFocus、LostFocus等事件。
DateTimePicker控件可以方便用户进行有关日期的设置,在可视化方式下进行日期的输入。
[知识扩展]
Windows 窗体 MonthCalendar 控件为用户查看和设置日期信息提供了一个直观的图形界面。该控件以网格形式显示日历:网格包含月份的编号日期,这些日期排列在周一到周日下的七个列中,并且突出显示选定的日期范围。可以单击月份标题任何一侧的箭头按钮来选择不同的月份。与类似的 DateTimePicker 控件不同,使用该控件可选择多个日期。
3.7 进度条控件控件的使用
本案例是在案例3-5的基础上又增加了一个进度条(ProgressBar)控件。当启动程序后,窗体中的进度条指示用户登录的剩余时间。
[技能目标]
1. 复习标签控件、命令按钮控件和文本框控件常用的属性、事件和方法。
2、复习巩固Timer控件的有关知识
3. 掌握进度条(ProgressBar)控件的使用
[操作要点与步骤]
1. 打开项目"Vbnet3-1"
单击"文件"菜单,在出现的下位菜单中,单击"打开",再单击"项目"。在"D:/VB.net"下,查到项目名为"VBnet3-1"的文件。单击"打开"按钮。
2. 在窗体中建立进度条(ProgressBar)控件
单击控件箱中"Windows窗体"选项卡,双击"ProgressBar"控件,在窗体中出现了"ProgressBar1 "对象,见图3-15。
3. 设置窗体中各对象的属性
相关对象的属性设置如表3-6。
表3-6 对象属性设置
Timer1 Enable True
Interval 100
Timer2 Enable False
Interval 2000
ProgressBar1 Maximum 100
Minimum 0
4. 编写程序代码
各窗体对象的相关属性设置完成后,对Button1和Button2对象的Click事件,改写相应的代码。在窗体上分别双击Button1和Button2对象,进入代码编写窗口,输入代码。具体代码如下:
Private Sub Button1_Click(ByVal sender As System.Object,ByVal e As System.EventArgs) _
Handles Button2.Click
If TextBox1.Text = "user01" And TextBox2.Text = "user@01" Then
MsgBox("欢迎进入本系统!")
Else
TextBox1.Text = ""
TextBox2.Text = ""
End If
End Sub
Dim i As Integer
Private Sub Timer1_Tick(ByVal sender As System.Object,ByVal e As System.EventArgs) _
Handles Timer1.Tick
i = i + 1
If i <= 100 Then
ProgressBar1.Value = i
Else
Timer2.Enabled = True
Timer1.Enabled = False
MsgBox("时间已到!" & Chr(10) & Chr(13) & "请重新运行程序!")
End If
End Sub
Private Sub Timer2_Tick(ByVal sender As System.Object,ByVal e As System.EventArgs) _
Handles Timer2.Tick
End
End Sub
【要点分析】
本例增加进度条和限时登录功能的用户登录界面的程序,在程序运行后,第二个定时器的Enable属性被设置为False,第一个定时器开始工作,每隔0.1秒(Interval属性值为100)将变量i的值加1,ProgressBar1.Value属性值等于i的值,随着ProgressBar1.Value属性值的增加,在窗体上我们看到进度条在滚动。当i 等于100时,进度条完成滚动。第一个定时器被触发后,第二个定时器的Enable属性被设置为True,第二个定时器开始运行,约再过二秒后(Interval属性设置为2000)程序自动退出。
[相关知识]
进度条用于直观地显示某个任务完成的状态,是一个水平放置的指示器。
常用的属性
(1)Maximum属性:用于设置进度条控件对象的最大值。
(2)Minimum属性:用于设置进度条控件对象的最小值。
(3)Value属性:用于设置进度条控件对象的当前值。该值应界于Maximum属性值和Minimum属性值之间。
[知识扩展]
登录http://www.microsoft.com/china/msdn/网站,是你学习程序设计的好的帮手!
练习园地3
一. 基础题
1. 试说明在以下动作中会引发哪些事件?
(1)在文本框中输入字符。
(2)文本框中的内容发生变化。
(3)某一个控件失去焦点时。
2. 组合框有几种形式?有何异同?通过什么属性值来改变?
3. 能使用文本框与列表框来实现组合框吗?
5. 单选按钮的Checked属性的默认值什么?
6. 复选框的Checked属性的默认值什么?
7. 定时器控件的默认Interval属性值是多少?
8. 滚动条控件的最大值最大可设为多少?
9. 定时器控件的Interval属性值高为2000,则定时时间为多少?
10. 说出RichTextBox与TextBox控件的三个不同点?
11. 如何实现在一个窗体上出现二组单选按钮?
二. 实战题
1. 改进本章中的登录界面实例,使登录界面的背景色在每次运行时可随机采用不同的颜色。
2. 编写一个简易的计算器,能够实现四则运算。
3. 设计一个简易的闹钟,能够设置60分钟以内时间,到时程序可以给出提示信息。
5. 编写一个小学生练习四则运算的程序,能帮助小学生进行四则运算练习。
三、挑战题
1. 编写一个功能较为完整的计算器,可以实现乘方和开根号运算。
2. 利用RichTextBox等相关控件设计一个与Windows写字板类似的应用软件。