VB--控

来源:百度文库 编辑:神马文学网 时间:2024/04/27 16:10:49

第一节——Label 控件

在第一章,我们已经知道,任何一个 VB 程序都是由操作界面及与之相应的程序代码组成,而操作界面则是由诸如“命令按钮控件”、“标签控件”等控件以及窗体共同组成。从本章开始,我们进入控件的学习过程。

Label(标签控件)是图形控件,主要作用在于显示文字信息,如大家比较熟悉的程序安装界面:在某个软件安装过程中,常常会显示一些帮助信息或与产品相关的介绍信息,而这些,大多是用标签控件制成的。

与以后我们要学到的文本框控件(TextBox)不同的是,标签控件显示的文字不能直接进行修改,要修改的话只能在设计阶段进行;文本框既可以用来显示文本,还能够在文本框中输入文本。

在 Visual Basic 工具箱中,标签控件的图标如图一所示。标签的默认名称(Name)和标题(Caption)为 LabelX(X为1、2、3,等等),规范的命名方式为:LblX(X为自己定义的詞,如 LblShow 、LblRed ,等等)

一、标签控件的主要属性:
1、Caption(标题)属性:
此属性用来设置在标签上显示的文本信息,可以在创建界面时设置,也可以在程序中改变文本信息,如第一章的例子中,通过点击按钮改变标签显示的字样。

如果要在程序中修改标题属性,代码规则如下:

标签名称.Caption = "欲显示的文本"

如第一章在程序中改变标签 LblShow 的 Caption 属性:

LblShow.Caption = "跟我来学 VB 神童教程"

2、BorderStyle(边框)属性:
本属性用来设置标签的边框类型,有两种值可选:0,代表标签无边框;1,代表标签有边框,并且具有三维效果,如图二显示的两个标签:

BorderStyle 属性可以在设计界面时指定,如图三:

也可以在程序中改变(但这种应用不多见),程序代码规则:

标签名.BorderStyle = 0/1(0或1,两者取一)

3、Font(字体)属性:
本属性用来设置标签显示的字体,既可以在创建界面时设定,也可以在程序中改变。

在创建界面时设定,如图四:在图四的设置界面中,除了可以选择字体,还可以设置显示文字是否为粗体、斜体、下划线等。

在程序中改变 Font 属性,程序代码书写规则如下:

字体改变:标签名.FontName = "字体类型",其中,“字体类型”可以是中文,如“宋体”、“隶书”;也可以是英文名,如“Arial”、“Times New Roman”,等等,不过,这些字体名称必须是电脑上有的。

字体大小改变:标签名.FontSize = X ,其中,X 是阿拉伯数字,代表字体是几号字。如:LblShow.FontSize = 11 。

粗体(FontBold)、斜体(FontItalic)、下划线(FontUnderline)、删除线(FontStrikethru)属性的设置值是代表真/假的逻辑判断值 True/False ,如下:

LblShow.FontBold = True/False
LblShow.FontItalic = True/False

4、Alignment(对齐)属性:
此属性用来设置标签上显示的文本的对齐方式,分别是:左对齐,0;右对齐,1;居中显示,2。可以在界面设置时设定,如图五: 

也可以在程序中改变,代码如下:

标签名.Alignment = 0/1/2

5、Visible(可见)属性:
本属性在大多数控件中都有,它能设定该控件是否可见。当值为 True ,控件可见;当值为 False ,控件隐藏。

控件的可见属性可以在界面设置时设定,如图六:

也可以在程序中改变,代码如下:

标签名.Visible = True/False

二、标签控件(Label)的主要事件:
所谓的事件,其实就是用户对应用程序的操作,如第一章中用鼠标点击命令按钮触发的 Click 事件。

事件的作用在于触发程序的执行,如第一章中的 Click 事件改变了标签控件的 Caption 属性。

标签控件的主要作用在于显示文本信息,但也支持一些为数不多的事件。

1、Click 事件(鼠标单击):
用鼠标点击标签时触发的事件,如改变标签的字体属性:

Private Sub LblShow_Click()
LblShow.FontName = "隶书"
End Sub

2、DbClick 事件(鼠标双击):
鼠标双击引发的事件,如改变标签的可见性:

Private Sub LblShow_DbClick()
LblShow.Visible = False
End Sub

三、知识点:
1、
用 VB 编写程序犹如搭积木,把每块“积木”(控件或其他对象)放在合理的位置,然后以某种机制(程序)将这些“积木”们运用起来,最后就搭成了我们需要的东西。所以,掌握每一种控件,包括它们的属性与主要事件,是我们学习编程的基础!

2、某些属性是大多数控件所共有的,如 Name 、FontBold、FontItalic、Visible ,等等;但也有些属性是某个控件所独有的,如标签控件的 WordWrap (标签的标题显示方式)。本节中我们只是讲述了部分标签控件的属性,其他属性可以在 VB 的帮助文件中查找到。

3、大家在学习过程中一定会疑惑,为什么在属性设置时,“=” 右边有时使用 "" ,有时又不使用 "" 。不知大家注意到没有,我们在使用 "" 时,是因为引号里面的内容是字符串,如"隶书"、"Times New Roman",等等。

4、字符的大小写问题:初学者还常常疑惑,字母什么时候应该大写,什么时候应该小写?其实,大写小写在 VB 程序中都是一样的,但为了让程序编写得更为规范,程序可读性更高,英文单词的第一个字母一般都要大写,如 Visible 、Name ,等等;

控件的命名也遵循以上原则,不同的是,命名都是由“控件类型名+具体名字”组成的,控件类型名的第一个字母要大写,具体名字的第一个字母要大写,如 LblShow 、CmdShow 、LblChange ,等等。

5、程序代码的规范:上面有这样的例子:
Private Sub CmdShow_Click()
LblShow.Caption = "跟我来学 VB 神童教程"
End Sub

Private Sub CmdShow_Click()代表一个过程,共由两部分组成,CmdShow 代表 CmdShow 这个按钮,Click 代表这个按钮的触发事件。

以此类推,Private Sub LblShow_DbClick ()也代表一个过程,LblShow 是个标签,DbClick 是双击事件。

另外,Private 意为“私有”,表明这个事件过程的类型;此外还有 Public 即“公有”事件。

Sub 表明这个过程是“子程序”,若干个“子程序”共同组成最终的应用程序。

()里面是用来装参数的,关于参数,我们以后讲述,如果没有参数,()里面为空。

第二节——TextBox控件

在 Visual Basic 操作界面中,TextBox(文本框)控件所代表的图标如图一:

TextBox 控件主要用来显示文本或用来输入文本,如 Windows 登陆时的“口令”窗口,或者记事本的整个编辑区域。

双击工具箱中的文本框控件或者单击文本控件,然后用鼠标在 VB 的工作区域拖拉,就可以创建文本框了。如图二:

文本框控件的默认名称为 TextX(X为 1、2、3,等等),命名规则为 TxtX(X为用户自定义的名字,如 TxtShow、TxtFont、TxtColor ,等等)

一、文本框控件的主要属性:
1、Text(文本)属性:
本控件最重要的属性,用来显示文本框中的文本内容,可以在界面设置时指定,如图三:

也可以在程序中动态修改,程序代码规则:

文本框控件名.Text = "欲显示的文本内容"

如要在一个名为 TxtFont 的文本框控件中显示“隶书”字样,那么输入代码:

TxtFont.Text = "隶书"

习题一:创建一个文本框(TxtContent)用来显示文本;按钮一(Cmd1),点击时文本框内容变为“跟我来学VB神童教程”;按钮二(Cmd2),点击时文本框内容清空(也就是没有内容)。

答案:见答案区。

2、SelText(选中文本)属性:
本属性返回或设置当前所选文本的字符串,如果没有选中的字符,那么返回值为空字符串即""。

请注意,本属性的结果是个返回值,或为空,或为选中的文本。

一般来说,选中文本属性跟文件复制、剪切等剪贴板(在 VB 中,剪贴板用 Clipboard 表示)操作有关,如要将文本框选中的文本拷贝到剪贴板上:

Clipboard.SetText 文本框名称.SelText(注意,本行没有表示赋值的等号。)

要将剪贴板上的文本粘贴到文本框内:

文本框名称.SelText = Clipboard.GetText(注意,本行有表示赋值的等号。)

例:一个文本框(TxtContent),按钮一(CmdCopy)用于复制文本框中的选中文本;按钮二(CmdPaste)用于将剪贴板上的内容粘贴到文本框内。

按钮一:
Private Sub CmdCopy_Click()
Clipboard.SetText TxtContent.SelText
End Sub

按钮二:
Private Sub CmdPaste_Click()
TxtContent.SelText = Clipboard.GetText
End Sub

3、SelStart 与 SelLength 属性:
SelStart ,选中文本的起始位置,返回的是选中文本的第一个字符的位置。
SelLength ,选中文本的长度,返回的是选中文本的字符串个数。 例如:文本框 TxtContent 中有内容如下:

跟我一起学习 VB 神童教程

假设选中“一起学习”四个字,那么,SelStart 为 3 ,SelLength 为 4 。

4、MaxLength(最大长度)属性:
本属性限制了文本框中可以输入字符个数的最大限度,默认为 0 ,表示在文本框所能容纳的字符数之内没有限制,文本框所能容纳的字符个数是 64K ,如果超过这个范围,则应该用其他控件来代替文本框控件。

这跟 Windows 中用记事本打开文件一样,当文件过大,系统会自动调用写字板来打开文件,而不是用记事本。

文本框控件 MaxLength 属性既可以在界面设置过程中予以指定,如图四:

也可以在设计时予以改变,代码如下:
文本框控件名.Maxlength = X(X为阿拉伯数字,如 10、20、57,等等)。

5、MultiLine(多行)属性:
本属性决定了文本框是否可以显示或输入多行文本,当值为 True ,文本框可以容纳多行文本;当值为 False ,文本框则只能容纳单行文本。

本属性只能在界面设置时指定,程序运行时不能加以改变。如图五:

6、PasswordChar(密码)属性:
本属性主要用来作为口令功能进行使用。例如,若希望在密码框中显示星号,则可在“属性”窗口中将 PasswordChar 属性指定为 “*” 。这时,无论用户输入什么字符,文本框中都显示星号。如图六:

在 VB 中,PasswordChar 属性的默认符号是星号,但你也可以指定为其他符号。但请注意,如果文本框控件的 MultiLine(多行)属性为 True ,那么文本框控件的 PasswordChar 属性将不起作用。

习题二:一个文本框(TxtPassword),PasswordChar 属性指定为星号“*”;一个按钮(CmdShow);另外还有一个标签(LblShow),在初始状态下,Caption 为空。程序目的在于,点击 CmdShow 按钮,LblShow 能显示文本框控件中输入的密码。

答案:见本节后面的答案区。

7、ScrollBars(滚动条)属性:
本属性可以设置文本框是否有滚动条。当值为 0 ,文本框无滚动条;值为 1 ,只有横向滚动条;值为 2 ,只有纵向滚动条;值为 3 ,文本框的横竖滚动条都具有。如图七:

8、Locked(锁定)属性:
当值为 False ,文本框中的内容可以编辑;当值为 True ,文本框中的内容不能编辑,只能查看或进行滚动操作。

二、文本框控件的事件:
除了 Click、DbClick 这些不常用的事件外,与文本框相关的主要事件是 Change、GotFocus、LostFocus 事件。

1、Change 事件:
当用户向文本框中输入新内容,或当程序把文本框控件的 Text 属性设置为新值时,触发 Change 事件。

2、GotFocus 事件:
本事件又名“获得焦点事件”。所谓获得焦点,其实就是指处于活动状态。在电脑日常操作中,我们常常用 Alt+Tab 键在各个程序中切换,处于活动中的程序获得了焦点,不处于活动的程序则失去了焦点(LostFocus)。

3、LostFocus 事件:
失去焦点,详情如上。 例子:一个文本框(TxtContent),默认状态下内容为空;当获得焦点时,文本框内容显示————“大家好,课程还难吗”字样;当失去焦点,文本框回到初始状态。另外再创建一个标签(LblShow),当用户试图向文本框输入文本或改变文本框本来的文本时,标签显示“标签的作用大家还清楚吗”字样。

界面如图八:

程序如下:

文本框:
Private Sub TxtContent_GotFocus()
TxtContent.Text = "大家好,课程还难吗"
End Sub

Private Sub TxtContent_LostFocus()
TxtContent.Text = ""
End Sub

Private Sub TxtContent_Change()
LblShow.Caption = "标签的作用大家还清楚吗"
End Sub

三、知识点:
1、
请记住,Clipboard 指的是 Windows 剪贴板,剪贴板最常用的操作是所选文本的拷贝与粘贴。

拷贝:
Clipboard.SetText 文本框名称.SelText

粘贴:
文本框名称.SelText = Clipboard.GetText

2、Multiline 属性为 True 时,文本框控件的 PasswrodChar 属性不起作用。

3、如果要让文本框的内容自动换行,只需取消文本框的横向滚动条就行了。

四、答案区:

习题一:

按钮一:
Private Sub Cmd1_Click()
TxtContent.Text = "跟我来学 VB 神童教程"
End Sub

按钮二:
Private Sub Cmd2_Click()
TxtContent.Text = ""
End Sub

习题二:

按钮:
Private Sub CmdShow_Click()
LblShow.Caption = TxtPassword.Text
End Sub

在前面两节里,我们学到了 VB 的操作方法,以及 Label 与 TextBox 控件的使用方法,现在我们用这两节学到的知识来做一个简单的文本编辑器。

一、程序最终目的:
用户可以在程序的编辑窗口输入文本;对输入的文本可以进行复制、粘贴、清除操作;另外,还能在两个标签上分别显示选中文本的起始位置、选中文本的长度。

二、界面设置:
根据程序的要求,我们需要制作一个文本框控件(TxtContent),它将做为程序的输入窗口;另外还有四个按钮,分别是复制按钮(CmdCopy)、粘贴按钮(CmdPaste)、清除按钮(CmdClear)、退出程序按钮(CmdQuit);此外,还需要两个用来显示所选文本起始位置的标签一(LblStart)和显示所选文本长度的标签二(LblLength)。

最终界面如图一:

请大家仿照图一制作。

三、属性设置:
如图一所示,但请注意,文本框控件的 Multiline(多行)属性要设置为 True ,这样,文本框才能自动换行。如图二:

四、程序书写:
1、文本框(TxtContent)的鼠标事件:
对文本的选择,可以理解为这样的过程:先在欲选择的文本前点击鼠标,按下左键不放,拖动鼠标直到选择文本的结束处,最后松开鼠标。这说明,松开鼠标代表着文本选择的结束,从而应该在文本框的鼠标弹起事件(MouseUp)中书写代码,以改变两个标签的标题。

具体代码如下:

Private Sub TxtContent_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) '括号中这一长串内容大家不必管它,这主要是产生位移时的坐标变动。
LblStart.Caption = "起始位置:" & TxtContent.SelStart
LblLength.Caption = "文本长度:" & TxtContent.SelLength
End Sub

注意:这个 “&”符号表示将两个字符串连接起来。另外如: A & B ,结果是 AB ;ABC & EFG ,结果是 ABCEFG ,等等。

2、复制按钮的点击事件:

Private Sub CmdCopy_Click()
Clipboard.SetText TxtContent.SelText
End Sub

3、粘贴按钮的点击事件:

Private Sub CmdPaste_Click()
TxtContent.SelText = Clipboard.GetText
End Sub

4、清空按钮的点击事件:

Private Sub CmdClear_Click()
TxtContent.Text = ""
End Sub

5、退出程序按钮的点击事件:

Private Sub CmdQuit_Click()
End   'End 在 VB 中,代表程序结束,用它可以直接退出程序。
End Sub

五、运行调试:
按 F5 键,或者点按运行按钮,这个简单的文本编辑器可以用了吗?

六、控件的一些基本操作:
在 VB “菜单栏”中有一个“格式”命令,通过它提供的一些功能可以让我们的工作事半功倍。

1、对齐:
分别是纵向对齐的“左对齐”、“居中对齐”、“右对齐”;横向对齐的“顶端”、“中间”、“底端”对齐;以及面向网格的“网格对齐”。它们的功能非常简单,你只需随意绘制几个控件,然后选择它们,再试着使用相关命令就能掌握了。如图三是随意绘制的程序界面:

全部选中后,使用“左对齐”的结果如图四:

也许你要问,这个对齐是以哪一个控件做为参照物的?再仔细看看图三,那个 Command1 按钮四周是八个实心的黑色小点,而其他控件则是白色的小点,现在你知道了吧,正是以 Command1 按钮为参照物进行对齐的,也就是说你最后选择的那一个控件。

2、统一尺寸:
以某个控件为参照物,统一其他控件的大小尺寸。

3、水平间距与垂直间距:
调整某几个控件的水平间距或垂直间距。

活用上面几个操作,将使你的工作事半功倍!

 

 

在 Visual Basic 操作界面中,CommandButton(命令按钮)控件所代表的图标如图一:

CommandButton 控件在程序中主要作为按钮进行使用。默认的名称为 CommandX(X为 1、2、3,等等),命名规则为 CmdX(X为用户自定义的名字,如 CmdCopy、CmdPaste ,等等)。

一、CommandButton 的主要属性:
1、Cancel(取消)属性:
当一个按钮的 Cancel 属性设置为 True 时,按 ESC 键与单击此命令按钮的作用相同,因此,这个命令按钮被称为取消按钮。

在一个窗体中,只允许一个命令按钮的 Cancel 属性为 True 。如图二:

2、Default(默认)属性:
当一个按钮的 Default 属性设置为 True 时,按回车键与单击此命令按钮的作用相同,因此,这个命令按钮被称为默认按钮。

与 Cancel 的设置一样,在一个窗体中,只允许一个命令按钮的 Default 属性设置为 True ,如图三:

3、Caption(标题)属性:
跟其他控件的 Caption 属性一样,都用来显示控件标题的属性。这里要强调的是,作为按钮控件,用户可以给按钮控件的 Caption 指定快捷方式。

方法是在按钮 Caption 属性中欲作为快捷键的字母前加上一个 “&” 符号,程序运行时,该字母的下面会自带一条下划线,同时按下 Alt 键和带有下划线的字母,功效相当于用鼠标点击该按钮。如图四:

4、Enabled(可用)属性:
本属性决定了控件是否可用的问题。当值为 False ,按钮在程序运行时呈灰色,不能响应用户的鼠标动作;只有当值为 True ,按钮才能使用。

本属性可以在设置界面时予以指定,如图五:

也可以在程序中修改,代码如下: 按钮控件名称.Enabled = True/False

例一:
两个命令按钮,按钮一(CmdEnable)初始状态为可用,按钮二(CmdFalse)初始状态不可用。点击按钮一,按钮二变为可用,按钮一变为不可用;点击按钮二,按钮一变为可用,按钮二变为不可用。

程序界面如图六:

程序代码如下:

按钮一:

Private Sub CmdEnable_Click()
CmdFalse.Enabled = True
CmdEnable.Enabled = False
End Sub

按钮二:

Private Sub CmdFalse_Click()
CmdFalse.Enabled = False
CmdEnable.Enabled = True
End Sub

5、Style(类型)与 Picture(图片)属性:
也许你想让应用程序的操作界面更美观一点,也许你想在某个按钮上添加幅小图片,那么,你就得使用到本控件的 Style 与 Picture 属性。

铵钮控件共有两种 Style ,一种是标准型(Standard),VB 中用 VbButtonStandard ,或者 0 表示;另外一种是图形型(Graphical),VB 中用 VbButtonGraphical ,或者 1 表示。

Style 属性可以在界面设置过程中予以指定,如图七:

也可以在程序中改变,代码如下:

按钮名称.Style = VbButtonStandard/VbButtonGraphical

或者:按钮名称.Style = 0/1

只有当按钮的 Style 设置为 Graphical 类型时,按钮的 Picture 属性才起作用。本属性能在指定的按钮上添加图片。

可以在界面设置过程中为按钮指定图片,如图八:

也可以在程序中进行指定,代码如下:

按钮名称.Picture = "图形文件所在的路径与文件名",例如:CmdPicture.Picture = "D:\image\01.jpg"

二、CommandButton 的事件:
命令按钮最常用的事件是鼠标点击(Click)事件,当点击按钮时,犹如发出了一道命令,而这也正是“命令按钮”这个说法的由来。 

在 Visual Basic 中,单选与复选按钮控件主要作为选项提供给用户选择。不同的是,在一组选择按钮中,单选控件只能选择一个,其他单选控件自动变为未被选中状态;而在一组复选按钮中,可以选定任意数量的按钮。

一、单选控件(OptionButton)与复选控件(CheckBox)的主要属性:
单选控件默认名称为 OptionX(X为阿拉伯数字 1、2、3,等等),起名规则为 OptX(X为用户自定义名字,如 OptRed、OptArial,等等);复选控件默认名称为 CheckX(X为 1、2、3,等等),起名规则为 ChkX(X为用户自定义名字,如 ChkName、ChkRed ,等等)。

在 VB 操作界面中,单选控件与复选控件的图标如图一所示:

以前讲到的大多数属性都适用于单选与复选控件,包括:Caption、Enabled、Font(FontBold、FontItalic、FontName,等等)、Name、Height ,等等,此处不再赘述。

Value 属性是单选与复选控件最主要的属性,但单选与复选控件的 Value 值有些微的差别。

单选控件:
选中时,Value 值为 True ;未被选中,Value 值为 False 。

复选控件:
选中时,Value 值为 1 ;未被选中,Value 值为 0 ;禁止对该按钮进行选择, Value 值为 2 。

请大家注意,单选控件与复选控件的 Value 值是不同的,而这是初学者最容易混淆的。

二、单选按钮与复选按钮的事件:
这两种控件最主要的事件是 Click 事件,当选中时,Value 值变为 True 或者 1 ,控件也自动变为选中状态。

三、单选按钮程序举例:
有如图二这样一个程序:

文本框(TxtContent)显示预设的字样;单选按钮一(OptArial),单击此按钮可以将文本框里显示的字样改变成 Arial 字体;单选按钮二(OptModern),单击此按钮能将文本框里显示的字样改变成 Modern 字体。

1、单选按钮一:
Private Sub OptArial_Click()
TxtContent.FontName = "Arial"
End Sub

2、单选按钮二:
Private Sub OptModern_Click()
TxtContent.FontName = "Modern"
End Sub

四、复选按钮的判断过程:
复选按钮的使用跟单选按钮相似,但由于一次可以选择多个复选按钮,所以复选按钮的选择比单选按钮多了一个判断过程。

这个判断过程在 VB 中可以用 If···Then···ElseIf···End If 语句完成。

If···Then···ElseIf···End If 是 VB 中的块结构条件语句,主要用来针对不同的情况,让应用程序做出不同的反应。

语句功能如下:

If 假设情况一 Then
  假设情况一成立时执行的语句块一
[ElseIF 假设情况二 Then
  假设情况二成立时执行的语句块二]
[ElseIf 假设情况三 Then
  假设情况三成立时执行的语句块三]
······
[Else
  所有条件都不成立时要执行的语句块]
End If

上面的语句块含义为:如果“情况一”成立,则执行“语句块一”;否则如果“情况二”成立,则执行“语句块二”······;如果所有情况都不成立,则执行 Else 之后的语句块并最后跳出判断过程。

例:
假设输入学生成绩(Score),如果分数小于 60 ,标签(LblShow)显示“成绩不及格”;如果分数大于 90 ,标签显示“成绩优秀”;如果分数介于两者之间,标签显示“成绩优良”。

If Score < 60 Then
  LblShow.Caption = "成绩不及格"
ElseIf Score > 90 Then
  LblShow.Caption = "成绩优秀"
Else
  LblShow.Caption = "成绩优良"
End If

有几点必须加以注意:
(1)、在上面的语句块中,ElseIf 之间没有空格,如果有空格即 Else If ,块结构则不成立。Else If 这种形式只能在单行结构条件语句中成立,而不能在块结构条件中成立。

(2)、执行语句块的程序代码不能紧跟 Then ,必须放到下一行中,这是块状结构的规定。

(3)、在块结构判断语句中,ElseIf 子句的数量没有限制,可以根据需要加入任意多个 ElseIf 子句。

(4)、ElseIf 与 Else 都是可选的,最简单的判断语句块形式如下:

If 条件 Then
  要执行的语句块
End If

如:If Score < 60 Then
    LblShow.Caption = "成绩不及格"
  End If

(5)、块结构语句必须以 If 开始,以 End If 结束。

五、复选按钮举例:
上面我们学习了复选按钮的判断过程,现在进入实例学习。 有如图三这样一个应用程序:

文本框(TxtContent)显示预设的字样;复选按钮一(ChkBold)可以将文本框里面的字变为粗体;复选按钮二(ChkItalic)可以将文本框里面的字变为斜体;复选按钮三(ChkUnderline)可以给文本框里面的文字加上下划线。

复选按钮一:
Private Sub ChkBold_Click()
 If ChkBold.Value = 1 Then
  TxtContent.FontBold = True
 Else
  TxtContent.FontBold = False
End Sub

复选按钮二:
Private Sub ChkItalic_Click()
 If ChkItalic.Value = 1 Then
  TxtContent.FontItalic = True
 Else
  TxtContent.FontItalic = False
End Sub

复选按钮三:
Private Sub ChkUnderline_Click()
 If ChkUnderline.Value = 1 Then
  TxtContent.FontUnderline = True
 Else
  TxtContent.FontUnderline = False
End Sub

联想:
复选按钮是不是非得经过这种选择判断?能不能如单选按钮那样直接使用呢?这是许多初学者,包括笔者自己,曾经感到疑惑的地方。(虽然现在看来它们的区别是如此之大)

还是上面这个例子,假设复选按钮一不经过判断,而直接在点击事件中输入代码:
Private Sub ChkBold_Click()
  TxtContent.FontBold = True
End Sub

那么你会发现,复选按钮一经点击就不能取消字体加粗的效果了;而实际上,复选按钮一的功能是,点击一次即选中时,字体加粗;点击第二次即取消选择,字体不再加粗;以此类推。

六:知识点:
1、切记,单选按钮与复选按钮的 Value 值是不同的。

单选按钮:
选中时,Value 值为 True ;未被选中时,Value 值为 False 。

复选按钮:
选中时,Value 值为 1 ;未被选中时,Value 值为 0 ;禁止选择,Value 值为 2 。

你可以试验一下,将复选按钮的 Value 值分别用 True/False 代替,看一下会出现什么问题。

2、两种选择按钮都针对 Click 事件做出反应,但单选按钮比较简单,只需直接输入代码即可;复选按钮比较复杂,需经过条件判断后再做出反应。切记!

3、 If···Then···ElseIf···End If ,只是条件判断方法的一种,以后我们还会学到其他的方法。

在前面两节中,我们学习了命令按钮(CommandButton)、单选按钮(OptionButton)、复选按钮(CheckBox)的使用,本节将就前两节的知识做个总结。

一、程序目的:
通过选项按钮的选择,对所选文本进行定制。

二、程序界面:
程序界面如图一:

一个文本框(TxtContent),显示“Learning Visual Basic”字样;三个单选按钮:按钮一(OptArial)让文本字体变为 Arial 类型;按钮二(OptModern)让文本字体变为 Modern 类型;按钮三(OptRoman)让文本字体变为 Times New Roman 类型;三个复选按钮:按钮一(ChkBold),让文本字体变为黑体;按钮二(ChkItalic),让文本字体变为斜体字;按钮三(ChkUnderline),给文本增加下划线。另外,还有一个退出按钮(CmdQuit),作用在于退出程序。

三、属性设置:
根据图一进行属性设置。

四、书写程序:

OptArial 按钮:
Private Sub OptArial_Click()
  TxtContent.FontName = "Arial"
End Sub

OptModern 按钮:
Private Sub OptModern_Click()
  TxtContent.FontName = "Modern"
End Sub

OptRoman 按钮:
Private Sub OptRoman_Click()
  TxtContent.FontName = "Times New Roman"
End Sub

ChkBold 按钮:
Private Sub ChkBold_Click()
 If ChkBold.Value = 1 Then
  TxtContent.FontBold = True
 Else
  TxtContent.FontBold = False
End Sub

ChkItalic 按钮:
Private Sub ChkItalic_Click()
 If ChkItalic.Value = 1 Then
  TxtContent.FontItalic = True
 Else
  TxtContent.FontItalic = False
End Sub

ChkUnderline 按钮:
Private Sub ChkUnderline_Click()
 If ChkUnderline.Value = 1 Then
  TxtContent.FontUnderline = True
 Else
  TxtContent.FontUnderline = False
End Sub

CmdQuit 按钮:
Private Sub CmdQuit_Click()
 End
End Sub

五、分组控件(Frame)的学习:
从前面学到的知识我们知道,单选按钮只能多选一,那么,下面这种分组选项的选择又该如何制作呢?如图二:

在图二中,既可以选择性别,又可以选择年级,它们是通过选项框分组控件(Frame)得以实现的。

简单地说,选项框控件是将不同的选项分类,在某一类里只能多选一,但多个类别的交叉使用,可以完成比较复杂的多项选择。

不仅仅如此,我们还可以将单选按钮、多选按钮分组,不同组内的操作不会影响其他组的操作。如图三:

分组控件的制作方法:
先在窗体上绘制合适大小的框架,然后点选单选控件或多选控件,最后将鼠标移到框架内并拖拉出选项按钮。

注意:请不要使用双击选择按钮控件然后将其拖动到分组框内的办法,否则,分组会失败。

Visual Basic 提供了列表框控件(ListBox)以供用户进行多个项目的选择。在工具箱面板上,列表框控件的图标如图一所示:

默认的列表框控件名为 ListX(X为阿拉伯数字 1、2、3,等等),规则的命名方式为:LstX(X为用户自定义的名字,如 LstName、LstUser,等等)。

一、列表框控件的主要属性:
列表框中可以有多个项目供选择,用户通过单击某一项选择自己所需要的项目,如果项目太多,超出了列表框设计时的长度,则自动增加竖向滚动条,如图二:

除了一些常见的诸如 Font 、Height、Left、Width、Enabled、Name 等属性外,列表框还有一些特殊的属性:

1、List(列表)属性:
List 是列表框最重要的属性之一,其作用是罗列或设置表项中的内容。可以在界面设置时直接输入内容,如图三:

在程序运行时,列表框中所有的选项,都可以通过 List(下标值) 的形式表示。比如列表框中的第一项,用 List(0)表示,列表框中的第二项,用 List(1)表示,列表框中的第十项,用 List(9)表示,以此类推。

大家注意,列表框中的第一项,是 List(0) ,而不是 List(1) 。

<1>、List() 属性的使用是非常灵活的,比如我们要从如图二的列表框(Lst1)中取出第三项内容,可以用下面的代码做到:A$ = Lst1.List(2)

其中,A 是一个变量;$ 指明了这个变量的类型:字符串型;这句话的意思是:将 Lst1 列表框中第三项(List(2))取出来然后赋值给字符串变量 A 。

象上面这种赋值办法,在 VB 中是非常普遍的,又如以前我们学到的:

LblShow.Caption = "Visual Basic",这句话是指将 Visual Basic 这个字符串赋值给 LblShow 标签控件并作为其标题。

紧接上面的内容,假设我们用一个标签显示出刚才取出的表项:

LblShow.Caption = A$

那么显示的结果正是我们取出的选项。

可见,取出某个列表框中的某一表项并将其赋值给某个变量,代码如下:

字符串变量 = 列表框名称.List(X) ,其中,X 是下标。

<2>、通过 List() 改变原有表项:假设我们要将如图二的列表框中第三项内容改为“跟我学 VB”,只需输入下面的代码即可:

Lst1.List(2) = "跟我学 VB"

上句话的意思是将“跟我学 VB”字符串赋值给 Lst1 并作为其第三项的内容。

结果如图四:

可见,要修改某个列表框中某一选项:

列表框名称.List(X) = "欲修改成的内容" ,其中,X 是下标。

2、ListCount 属性:
本属性返回列表框表项数量的数值,只能在程序运行时起作用。比如:一个有着四种选项的列表框,那么 ListCount 就为 4 ;一个列表框有五个选项,那么 ListCount 就为 5 。

返回一个列表框的表项数量值并将其赋值给某个变量,代码如下:

数值型变量 = 列表框名称.ListCount

比如要返回图二列表框的 ListCount:

X% = Lst1.ListCount ,其中,X 是变量,% 表示X是整数类型的变量。

3、ListIndex(索引)属性:
本属性用来返回或设置控件中当前选择项目的索引号,只能在程序运行时使用。第一个选项的索引号是 0 ,第二个选项的索引号是 1 ,第三个选项的索引号是 2 ,依此类推,ListCount 始终比最大的 ListIndex 值大 1 。当列表框没有选择项目时, ListIndex 值为 -1 。

在程序中设置 ListIndex 后,被选中的项目呈反相显示,如图五:

在列表框控件的所有属性中,本属性是非常重要的,因为一个列表,事先你并不知道用户将要选择哪一条项目,这时,只有根据 ListIndex 返回的数值,我们才能让程序针对用户的选择做出适当的反应。

返回 ListIndex 的代码如下:

X% = 列表框名称.ListIndex

联想:根据前面的知识我们知道,要取出第三项内容,代码如下:

A$ = Lst1.List(2)

假设现在选中的是第三项,但我们事先不知道用户要选择这一项,那么又应该如何访问这第三项呢?

代码如下:A$ = Lst1.List(Lst1.ListIndex) 此时,Lst1.ListIndex 等同于 2 。
仔细想一想,为何要如此书写?

4、Columns(列)属性:
本属性用来确定列表框的列数,当值为 0 时,所有项目呈单列显示;当值为 1 或者大于 1 ,项目呈多列显示。Columns 属性只能在界面设置时指定。如图六:

默认状态时,如果项目的总高度大于列表框的高度,那么列表框右边会自动增加一个垂直滚动条,用来上下移动列表框。

5、MultiSelect(多重选择)属性:
本属性决定了选项框中的内容是否可以进行多重选择,只能在界面设置时指定,程序运行时不能予以修改。如图七:

MultiSelect 共有三个值:0 ,不允许多项选择,如果选择了一项就不能选择其他项;1 ,允许多重选择,但功能不如 2 ,可以用鼠标或空格选择;2 ,功能最强大的多重选择,可以结合 Shift 键或 Ctrl 键完成多个表项的多重选择。方法是:单击所要选择的范围的第一项,然后按住 Shift 键,再单击选择范围最后一项。

6、Style(类型)属性:
本属性决定了列表框的外观,共有两个值:1 ,Standard ,即为标准型,如图八:

2 ,CheckBox ,复选框型,如图九:

本属性只能在界面设置时确定。

7、Selected(选中)属性:
本属性返回或设置在列表框控件中某项目是否选中的状态。选中时,值为 True ;未被选中,值为 False 。

代码规则如下: 列表框名称.Selected(索引值) = True/False

注意,索引号其实是项目的下标值,如果是第三项,那么索引值是 2 ,如果是第十项,那么索引值是 9 ,以此类推。

例一:
有如图十这样一个应用程序:

列表框(LstName)中是人物的名称,用户选择不同的名字,下面的标签(LblShow)自动显示此人的相关信息。

源代码如下:

Private Sub LstName_Click()
 If LstName.Selected(0) = True Then
  LblShow.Caption = "马拉多纳是阿根廷的球星"
 ElseIf LstName.Selected(1) = True Then
  LblShow.Caption = "贝肯鲍尔是德国的球星"
 ElseIf LstName.Selected(2) = True Then
  LblShow.Caption = "罗纳尔多是巴西的球星"
 Else
  LblShow.Caption = "贝克汉姆是英国的球星"
 End If
End Sub

本程序是根据用户选择的不同,在标签按件中显示不同的信息;另外,我们用到了前面学到的 If ···Then··· ElseIf··· End If 语法。

8、SelCount(选中项目数量):
只有当 MultiSelect 属性值为 1 或 2 时,本属性才起作用,用来读取列表框中所选项目的数目,通常与 Selected 一起使用,以处理控件中的所选项目。

二、列表框控件的主要事件:
列表框控件主要接收 Click 与 DblClick ,如例一。

三、列表框控件的方法:
1、增加项目:AddItem
用 AddItem 可以为列表框增加项目,代码规则如下:
列表框名称.AddItem 欲增项目[,索引值]

其中,索引值是可选项,是指欲增项目放到原列表框中的第几项,如放在第三项,那么索引值是 2 ,放在第五项,索引值则是 4 。

假设我们要在如图十这样的程序中增加项目:LstName.AddItem "郝海东",4

2、清除所有:Clear
用 Clear 可以清除列表框中所有的内容,代码如下:
列表框名称.Clear

3、删除选项:RemoveItem
此方法可以删除列表框中指定的项目,代码如下:
列表框名称.RemoveItem 索引值
其中,索引值是必须的,表示欲删除哪一个项目。

同样如图十的程序,假设我们要删除第三个项目,代码如下:
LstName.RemoveItem 2

联想:对于任意一个列表框,要删除已经选中的项目,代码如下:
列表框名称.RemoveItem 列表框名称.ListIndex

比如:LstName.RemoveItem LstName.ListIndex

为什么这样写?请大家仔细想想。

四、知识点:
1、本节的难点在于 List() 、ListIndex ,请大家一定要把它们吃透。

2、本节提到了变量,关于它们的详细情况,我们将在以后学习,目前大家只需要知道,这里的变量只是个临时工,主要用来储存一些临时数据。

组合框控件(ComboBox)将文本框控件(TextBox)与列表框控件(ListBox)的特性结合为一体,兼具文本框控件与列表框控件两者的特性。它可以如同列表框一样,让用户选择所需项目;又可以如文本框一样通过输入文本来选择表项。

组合框默认的名称是 ComboX(X为阿拉伯数字 1、2、3 ,等等),规则的命名方式为:CboX(X为用户自定义的名字,如 CboName、CboColor ,等等)。组合框在 VB 工具箱面板中的图标如图一:

一、组合框控件的主要属性:
列表框控件的大部分属性同样适合于组合框,此外,组合框还有一些自己的一些属性:

1、Style(类型)属性
组合框共有三种 Style :

当值为 0 ,组合框是“下拉式组合框”(DropDown Combo),与下拉式列表框相似,但不同的是,下拉式组合框可以通过输入文本的方法在表项中进行选择,可识别 Dropdown 、Click、Change 事件,如图二:

当值为 1 ,组合框称为“简单组合框”(Simple Combo),由可以输入文本的编辑区与一个标准列表框组成,可识别 Change 、DblClick 事件,如图三:

当值为 2 ,组合框称为“下拉式列表框”(Dropdown ListBox),它的右边有个箭头,可供“拉下”或“收起”操作。它不能识别 DblClick 及 Change 事件,但可识别 Dropdown 、Click 事件,如图四:

综上所述,如果你想让用户能够输入项目,则应将组合框设置成 0 或 1 ,如果只想让用户对已有项目进行选择,则应将组合框设置成 2 。

2、Text(文本)属性:
本属性值返回用户选择的文本或直接在编辑区域输入的文本,可以在界面设置时直接输入,如图五:

但要显示多个选项,不能简单地用 Text 属性指定,因为后一选项会覆盖前面的选项,这时,常常要用到窗体的载入事件。(Form_Load)

Form_Load 的意思是,在打开窗口的同时,将指定的内容载入。详细情况见后面的窗体篇。

二、组合框的事件:
根据组合框的类型,它们所响应的事件是不同的。

例如,当组合框的 Style 属性为 1 时,能接收 DblClick 事件,而其他两种组合框能够接收 Click 与 Dropdown 事件;当 Style 属性为 0 或 1 时,文本框可以接收 Change 事件。

三、组合框的方法:
跟列表框一样,组合框也适用 AddItem 、Clear 、RemoveItem 方法。

四、组合框举例:
有如图六这样一个应用程序:

在名为 CboChoose 的下拉组合框中任意选择一种机型,自动会在名为 LblShow 的标签上显示出来。

程序代码如下:

窗体:

Private Sub Form_Load()
 CboChoose.AddItem "IBM"
 CboChoose.AddItem "AST"
 CboChoose.AddItem "Compaq"
 CboChoose.AddItem "联想"
 CboChoose.AddItem "长城"
 CboChoose.AddItem "东海"
End Sub

下拉式组合框的 Click 事件:

Private Sub CboChoose_Click()
 LblShow.Caption = "你的机型是:" & CboChoose.Text
End Sub  

前面我们学了列表框控件(ListBox)与组合框控件(ComboBox),本节将就它们制作一个简单的应用程序。

一、程序界面:界面如图一

二、程序目的:
两个列表框,左列表框(LstLeft)罗列了一些歌手名字,右列表框(LstRight)初始状态为空;点击向右按钮(CmdRight),可以将左列表框中的指定选项移动到右边列表框;点击全部向右按钮(CmdAllRight),可以将左列表框中所有的内容搬到右列表框中;点击向左按钮(CmdLeft),可以将右列表框中选定的表项移动到左列表框中;点击全部向左按钮(CmdAllLeft),可以将右列表框中的所有内容移动到左列表框中。

三、属性设置:
见图一,注意,列表框的 Style 都为 0 即标准类型。

四、程序代码:
1、窗体的载入事件(Form_Load)
Private Sub Form_Load()
 LstLeft.AddItem "刘德华"
 LstLeft.AddItem "张学友"
 LstLeft.AddItem "郭富城"
 LstLeft.AddItem "黎 明"
 LstLeft.AddItem "谭咏麟"
 LstLeft.AddItem "梅艳芳"
 LstLeft.AddItem "张曼玉"
End Sub

2、向右按钮的点击事件(CmdRight_Click)
Private Sub CmdRight_Click()
 LstRight.AddItem LstLeft.List(LstLeft.ListIndex)
 LstLeft.RemoveItem LstLeft.ListIndex
End Sub

3、全部向右按钮的点击事件(CmdAllRight_Click)
Private Sub CmdAllRight_Click()
 LstRight.AddItem "刘德华"
 LstRight.AddItem "张学友"
 LstRight.AddItem "郭富城"
 LstRight.AddItem "黎 明"
 LstRight.AddItem "谭咏麟"
 LstRight.AddItem "梅艳芳"
 LstRight.AddItem "张曼玉"
 LstLeft.Clear
End Sub

4、向左按钮的点击事件(CmdLeft_Click)
Private Sub CmdLeft_Click()
 LstLeft.AddItem LstRight.List(LstRight.ListIndex)
 LstRight.RemoveItem LstRight.ListIndex
End Sub

5、全部向左按钮的点击事件:(CmdAllLeft_Click)
Private Sub CmdAllLeft_Click()
LstLeft.AddItem "刘德华"
LstLeft.AddItem "张学友"
LstLeft.AddItem "郭富城"
LstLeft.AddItem "黎 明"
LstLeft.AddItem "谭咏麟"
LstLeft.AddItem "梅艳芳"
LstLeft.AddItem "张曼玉"
LstRight.Clear
End Sub

五、注意事项:
1、窗体载入事件:
就是窗体打开时自动加载的信息,也可以在界面设置时通过左列表框的 List 属性设定。如图二:

2、无论是部分转移,还是全部移动,都要记着将本已移动的表项在原有列表框中清除,如代码: LstLeft.RemoveItem LstLeft.ListIndex

如果不清除,那么表项移动后,原先的表项还在原处,用户可能对同一表项多次选择。如图三

3、第一个应用程序还没编写完,仔细看一下,哪里还需要再编写?

没错,就是向左按钮与向右按钮的点击事件还没完善,按照上面的程序,如果在初始状态下(也就是没有选中任何表项),点击向左或向右按钮会产生程序错误。

所以我们得在原来向左或向右按钮的事件中增加判断过程,修改后的代码如下:

向右按钮:
Private Sub CmdRight_Click()
If LstLeft.SelCount > 0 Then
LstRight.AddItem LstLeft.List(LstLeft.ListIndex)
LstLeft.RemoveItem LstLeft.ListIndex
End If
End Sub

向左按钮:
Private Sub CmdLeft_Click()
If LstRight.SelCount > 0 Then
LstLeft.AddItem LstRight.List(LstRight.ListIndex)
LstRight.RemoveItem LstRight.ListIndex
End If
End Sub

看见了吧,向左与向右按钮还得增加列表框中是否有表项被选中的判断。

4、大家先移动左列表框中的一个项目到右列表框中,然后再全部移过去,你又会发现什么样的问题呢?

这时,你会发现右列表框的项目多了一项,而这多出来的表项正是最先移过去的那个项目,那么,全部移动的按钮还需要加以完善。如图四:

解决办法很简单,在全部移动时,先清除目标列表框的内容再进行移动,修改后的代码如下:

全部向右按钮:
Private Sub CmdAllRight_Click()
LstRight.Clear
LstRight.AddItem "刘德华"
LstRight.AddItem "张学友"
LstRight.AddItem "郭富城"
LstRight.AddItem "黎 明"
LstRight.AddItem "谭咏麟"
LstRight.AddItem "梅艳芳"
LstRight.AddItem "张曼玉"
LstLeft.Clear
End Sub

全部向左按钮:
Private Sub CmdAllLeft_Click()
LstLeft.Clear
LstLeft.AddItem "刘德华"
LstLeft.AddItem "张学友"
LstLeft.AddItem "郭富城"
LstLeft.AddItem "黎 明"
LstLeft.AddItem "谭咏麟"
LstLeft.AddItem "梅艳芳"
LstLeft.AddItem "张曼玉"
LstRight.Clear
End Sub

5、本节的程序只是为了让大家便于理解才这样编写的,而最为科学、最为有效的编写方法,我们将在下一节讲述。在开始下一节课程之前,大家可以将两个列表框的 Style 改成 1 即复选类型,你会发现本节所编写的程序又有很多问题了,该如何解决呢?下一节见!

 

在上一节,我们制作了一个 Style 为 0 的列表程序,现在我们来制作一个 Style 为 1 的列表程序。

虽然仅仅是 Style 的改变,但整个程序发生了完全的变化。本节中的程序更为科学,而且只需改动几行代码,同样适合上一节的程序。

在编制本节程序前,我们有必要对 For ··· Next ···循环结构语句做个了解。

一、For 循环语句:
在实际生活中,我们经常会遇到一些操作并不复杂,但需要重复多次处理的情况,如人口统计、银行利率的计算等,为此,Visual Basic 提供了循环语句来专门解决此类情况。

循环语句的具体情况,我们将在以后的章节中阐述,本节我们只是针对 For 循环语句做个大致的了解。

1、For ··· Next ···语句的一般格式:
For 变量 = Start To End [Step]
   [需要循环的语句]
   [Exit For]
Next 变量

说明:
(1)、For 后的“变量”与 Next 后的“变量”为同一个,“变量”应该是数值类型的。

(2)、Start 代表的是循环的初始值,End 代表的是循环的终值。假设从 1 到 100 进行循环,那么,循环初值是 1 ,终值是 100 ;假设从 1 到 50 进行循环,那么初值是 1 ,终值是 50 。

(3)、To 是循环中的关键字,表示从初值到终值的范围,不能省略。

(4)、Step 是步长值,代表变量的增量,既可以是正数(递增循环),也可以是负数(递减循环),但不能为 0 ,如果步长值为 1 即默认状态,可以省略不写。

(5)、需要循环的语句,既可以是一个,也可以是多个语句,但必须放在 For 与 Next 之间。

(6)、Exit For:当程序执行到此处,自动退出本层循环。

(7)、需要循环的语句与 Exit For 都可以省略,这时表示的是一个无内容的空循环,主要做为程序延迟使用。

2、示例一:
编写一个程序,用来计算 1 到 100 间所有整数的和是多少。

(1)、程序界面与控件属性:
程序界面与控件属性如图一,为了让大家看得更为清楚,我们将标签控件的 BoderStyle 属性设为 1 。

 

(2)、程序功能:
用户点击“开始”按钮(CmdStart)开始计算,完成后将结果用标签(LblShow)显示出来。

(3)、书写代码:
“开始”按钮的点击事件:
Private Sub CmdStart_Click()
x = 0
For y = 1 To 100
x = x + y
Next y
LblShow.Caption = "最后的结果是:" & x
End Sub

说明:
(1)、1 到 100 中所有整数的和可以这样来看:1+2+3+······+100 ,即 100 次相加,那么这重复的 100 次相加可以通过 For 循环来完成。

(2)、程序中 y 只是用来决定循环次数的变量,通常的,我们会利用其他变量来编写程序,这里的 X 就是一个求和累加器,它的初值是 0 ,终值则是我们最后需要的数值。

(3)、X = X +y ,是指变量 X 与 y 相加后将新的值赋给 X 。当 X 为初始的 0 时,y 进入第一次循环即 y = 1 ,X + Y = 1 ;系统将 X = 1 记录下来,然后进入第二次循环即 y =2 ,X + Y = 3 (1 + 2),然后将 X = 3 记录下来并进入第三次循环,以此类推。这就将 1+2+3+······+100 的最终值算了出来。

(4)、经过第一百次循环,程序执行 Next y 后的语句,即将最后结果用标签显示出来。

3、示例二:
计算 1 到 100 间所有奇数的和。

只需将上例中的“开始”按钮的循环程序加上步长值即可。代码如下:
Private Sub CmdStart_Click()
x = 0
For y = 1 To 100 Step 2
x = x + y
Next y
LblShow.Caption = "最后的结果是:" & x
End Sub

二、列表程序二:
1、程序界面:

最终的程序界面如图二:

 

跟上一节的内容相比,带复选框的选择是通过勾选复选项前面的复选框来确定一个表项是否被选中的,它可以一次选中多个表项并一次移动多个表项。

上一节的程序,一次只能移动一个表项。

2、前后两种程序的区别:
上一节的程序中,对单个表项进行移动,首先加入了是否选中的判断,然后再进行移动;全部移动,首先对目标框清零,再进行移动。它们虽然比较好理解,但程序的有效性却不佳。

本节的程序,对单个与全部表项进行移动,都采用循环法,可以一次移动多个表项。

3、程序代码:
(1)、窗体的载入事件(Form_Load)跟上一节一样:

Private Sub Form_Load()
 LstLeft.AddItem "刘德华"
 LstLeft.AddItem "张学友"
 LstLeft.AddItem "郭富城"
 LstLeft.AddItem "黎 明"
 LstLeft.AddItem "谭咏麟"
 LstLeft.AddItem "梅艳芳"
 LstLeft.AddItem "张曼玉"
End Sub

(2)、向右按钮的点击事件(CmdRight):

Private Sub CmdRight_Click()
 Dim X As Integer
 While LstLeft.SelCount > 0
  For X = 0 to LstLeft.LstCount - 1
   If LstLeft.Selected(X) = True Then
    LstRight.AddItem LstLeft.List(X)
    LstLeft.RemoveItem X
    Exit For
   End If
  Next X
 Wend
End Sub

(3)、全部向右按钮的点击事件(CmdAllRight)

Private Sub CmdAllRight_Click()
 Dim X As Integer
 For X = 0 to LstLeft.ListCount - 1
  LstRight.AddItem LstLeft.List(X)
 Next X
 LstLeft.Clear
End Sub

(4)、以此类推,输入向左按钮(CmdLeft)与全部向左按钮(CmdAllLeft)的点击事件,最后按 F5 键运行程序。