为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

VB神童教程:跟我来学VB(图文并茂)

2017-06-05 42页 doc 847KB 57阅读

用户头像

is_212655

暂无简介

举报
VB神童教程:跟我来学VB(图文并茂)VB神童教程:跟我来学VB VB的故事   话说二十世纪七十年代有一对好朋友,一个叫比尔(Bill),一个叫鲍尔(Paul)。他们经常在一起玩游戏。起初是玩别人的游戏,但玩来玩去觉得不过瘾,于是发明了一种语言,叫做Basic ,自己来编写游戏。 碰巧的是,个人电脑在此时飞速发展起来,很多厂家对这种语言很感兴趣,于是这对朋友商量着成立一个公司专门出售Basic。   讲到这里,大家一定猜到他们是谁了吧?   没错,这个Bill就是比尔盖茨,这个公司就是微软;鲍尔(Paul Allen)后来虽然离开了微软,但同样组建了自...
VB神童教程:跟我来学VB(图文并茂)
VB神童教程:跟我来学VB VB的   话说二十世纪七十年代有一对好朋友,一个叫比尔(Bill),一个叫鲍尔(Paul)。他们经常在一起玩游戏。起初是玩别人的游戏,但玩来玩去觉得不过瘾,于是发明了一种语言,叫做Basic ,自己来编写游戏。 碰巧的是,个人电脑在此时飞速发展起来,很多厂家对这种语言很感兴趣,于是这对朋友商量着成立一个公司专门出售Basic。   讲到这里,大家一定猜到他们是谁了吧?   没错,这个Bill就是比尔盖茨,这个公司就是微软;鲍尔(Paul Allen)后来虽然离开了微软,但同样组建了自己的实业公司。   Basic正是微软公司售出的第一套软件。Basic 发展到今天已经有很多版本,如 GW-Basic 、QuickBasic 、QBasic 、Visual Basic ,等等,其中,Visual Basic 是最容易学习与应用的程序语言之一。虽然最容易学习与使用,但它的功能却非常强大,很多应用程序都是用它编写出来的。   不是个个都能成为比尔盖茨,但你想知道天天使用的Windows的诸多功能是如何实现的吗?你想要编写自己的应用程序吗?那么,请跟我来吧,进入我们的VB神童教程之旅。   学习思路   曾经下过很多决心自学VB。但每次看到一行行枯燥的程序代码眼皮不自觉地就要打架。后来几乎是“头悬梁,锥刺股”才得入门。现在想来,这种入门大可不必。严谨求实的态度是非常正确的,但既然面对初学者,也许换一种思路更贴切。少一些隐晦,多一些直观;少一些专业术语,多一些例子。   传统的教程,多从VB的发展谈起,然后是什么编程环境、数据类型、变量、常量、函数,等等。我们可不可以换一种思路,让大家直接就可以编写出简单的应用程序,在熟悉了大部分操作并激发出了兴趣后,再去探讨一些比较抽象的东西呢?   结果就有了我们的《VB神童教程》。   在这个教程中,我们既是讲述者,也是跟大家一样的初学者,我们按着一种比较容易的方式来共同学习。 课程安排 我们以最为普及的 VB 6.0 为例进行教程学习,循序渐进,保证你轻松掌握。 第一章:我的第一个 VB 程序——“跟我来学 VB 神童教程” 第二章:控件学习 第一节——Label 控件 第二节——TextBox控件 第三节——综合示例一 第四节——CommandButton 控件 第五节——单选与复选控件 第六节——综合示例二 第七节——列表框控件 第八节——组合框控件 第九节——综合示例三 第十节——综合示例四 第十一节——滚动条 第十二节——综合示例五 第十三节——Timer 控件 第十四节——文件操作控件 第十五节——窗体 第三章:用 Visual Basic 绘画: 第一节——图形框与图像框控件 第二节——综合示例六 第三节——直线与形状控件 第四节——常用的绘图方法 第四章:菜单与多文档界面的制作: 第一节——菜单界面 第二节——综合示例七 第三节——动态增减菜单 第四节——基本的窗体操作 第五节——多文档程序 vb神童教程第一章:我的第一个 VB 程序 一、打开程序: 点击桌面上的 Visual Basic 图标,在弹出的如图一的窗口中选择“创建标准 EXE”按钮。 图一 确定后的状态如图二 图二 这就是创建了一个新的“标准 EXE”文件了。 二、工作界面简介: 默认的 VB 工作界面由标题栏(1)、菜单栏(2)、工具栏(3)、工具箱面板(4)、程序设计区(5)、项目窗口(6)、属性窗口(7)、布局窗口(8)组成,至于它们具体有什么作用,我们将在以后的实例学习中接触,这里就不予以说明。 三、编写我的第一个应用程序: <1>、应用程序要产生的效果: 创建的应用程序要有什么样的功能?这是开发每一个应用程序必须最先想到的。 我们的第一个应用程序非常简单,使用者只需点击程序上的一个按钮,程序界面上就会显现“跟我来学 VB 神童教程”字样。 <2>、开发思路: 根据应用程序要实现的功能,那么我们至少需要制作一个按钮、一个程序界面,为了让应用程序更规范,我们还需要创建一个用来显示“跟我来学 VB 神童教程”字样的容器。 <3>、具体制作过程: 1、创建一个新的“标准 EXE”文件,如第一步所做。 需要指出的是,这个以 Form1 为标题栏的程序界面就是我们需要的“程序界面”,也是用户首先看到的对象,所以尽可能将其做得美观一点。 当然,对应用界面的美化问题我们将在以后探讨。 2、根据开发思路,现在我们来制作按钮。 双击工具箱面板上的命令按钮(Command Button)图标,如图三: 图三 然后你会发现程序界面上多了一个命令按钮,如图四: 图四 用鼠标拖动新建的按钮到适当位置,如图五: 图五 再创建一个标签按钮,双击如图六的图标: 图六 完成后程序界面如图七: 图七 用鼠标拖动标签按钮到合适位置,如图八: 图八 将鼠标放在标签按钮左右边缘任意一处,当鼠标呈左右键头时横向拖动,把标签按钮拖长,最后的程序界面如图九: 图九 3、对按钮属性进行设置: 开发任何应用程序,在完成界面布局后,应该就每一个元素进行属性设置以达到自己的要求。当然,也可以在元素布局的过程中进行属性设置。 首先点选箭头状的“选择”图标以便进行选择,如图十: 图十 选中程序界面上的命令按钮,然后找到属性面板,如图十一: 图十一 其中,“名称:Command1”是此按钮的名称,主要用于程序引用,所以不要用中文名字。 此处,可以不修改按钮的名字,但为了程序更规范,我们将其名字改成“CmdShow”,如图十二: 图十二 “Caption:Command1”是命令按钮的标题,也就是显示在命令按钮上的字样, 我们将其改成“显示”,如图十三: 图十三 用上面的方法,我们将标签按钮的名字改为“LblShow”,如图十四: 图十四 将标签按钮的标题改成空字符串,也就是没有任何文字,如图十五: 图十五 4、输入程序代码: 我们前面讲到的元素布局、属性设置只不过是对应用程序操作界面的定制,要让程序实现功能,关键还得输入程序代码。 选中命令按钮 CmdShow ,然后双击它,弹出如图十六的程序代码输入窗口: 图十六 在光标闪烁处输入代码:LblShow.Caption = "跟我来学 VB 神童教程"(这句程序是什么意思?以后我们讲述)。如图十七: 图十七 输入完毕,点击右上角的 “X” 回到对象窗口,然后点击工具栏上的“启动”按钮(快捷键:F5),可以看最终结果了! 四、: 1、我们的第一个程序确实非常简单,但它道出了程序设计的基本方法:首先,应用程序要用来做什么?也就是开发应用程序的目的;其次,应用程序大体上由哪些元素组成?也就是应用程序的操作界面如何,如果可能,最好先用笔把程序界面画出来;然后是对程序界面中每一个元素的属性进行设置;最后输入程序代码和调试。 2、前面我们所谈到的“命令按钮”、“标签按钮”,其实它们准确的说法是“命令按钮控件”、“标签按钮控件”,无论是这些控件,还是刚才作为应用程序界面的“窗体”,都是“对象”,因此, VB 是一门面向对象的编程语言,每一个对象都具有很多属性,如大小、位置、标题等等。属性的设置通过属性窗口完成。 3、这一点的内容不需强记,在以后的控件讲述中将会涉及。 除了“命令控钮控件”、“标签按钮控件”,默认的工具箱面板上还有“指针”工具(用来选择程序设计窗口中的对象)、图片控件(在界面上添加图片)、文本框控件(在界面上显示文本或用来输入文本)、选项框控件(主要用来作为区域划分的控件,一般把相同类型的控件放置在一个选项框中,把其他类型的控件放在其他选项框中)、复选控件(用来制作复选按钮)、单选控件(制作单选按钮)、组合框控件(用来制作功能更为强大的列表框,既有文本框控件的功能,还有列表框控件的功能)、列表框控件(制作各种列表)、滚动条控件(共有横向与竖直两种)、时钟控件(一般用来添加时间触发)、文件操作控件(共有磁盘列表框控件、文件夹列表框、文件列表框三种),另外,还有绘图控件、图像框控件、日期控件。 4、VB 提供了丰富的控件选择,除了默认的工具箱面板上的控件外,还有很多控件没有罗列出来,我们可以通过“工程‖部件”命令或在工具箱面板上单击鼠标右键,在弹出的快捷菜单中选择“部件”命令,弹出如图十八的窗口: 图十八 本窗口罗列了当前系统中所有的控件,只需选中所需控件前面对应的复选框就行了。 5、编写程序应该养成好习惯,在给每一个对象命名时首先要保证规范,其次要能“望文生义”,也就是看见一个对象的名字就能知道它是做什么的,如前面我们给命令按钮控件起名为“CmdShow”,一看就知道是用来 Show 的 Command 类型控件。 6、我们最初进入的程序设计界面是对象界面,进入代码界面的办法很简单,前面用到的双击控件是一种办法,另外还可以通过点击项目窗口中的“查看代码”按钮进入,如果点按旁边的“查看对象”按钮就会又回到原来的对象界面。如图十九: 图十九 7、在前面的例子:LblShow.Caption = "跟我来学 VB 神童教程"中,“=”并不是数学中的等号,而是一种赋值符号,表示:将“跟我来学 VB 神童教程”这个字符串赋值给 LblShow ,并作为它的标题。 另外如:X = X+6 ,在数学中,这种表达式不存立,而在 VB 中,是指在 X 本来的基础上加 6 ,然后把结果重新赋给 X ,这时 X 的值不再是原来的数字,而是加上 6 后的值。 8、程序的保存: 在 VB 中进行保存,常常用“保存工程”命令,而在保存过程中,必须保存两次,一次是以 .frm 为扩展名的文件保存,另一次是以 .VBP 为扩展名的文件保存。前者是保存应用程序的窗体文件,后者是保存应用程序的工程文件。如图二十与图二十一: 图二十 图二十一 vb神童教程第二章第一节——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 神童教程" 但是请大家注意,上面的代码应该写入供触发的控件对应的程序代码区,如第一章中,是在命令按钮的程序代码区输入的代码,而不是标签本身的代码区哟。 这也是初学者常常大惑不解的地方,为什么我要让标签改变字样,却要在其他控件中输入代码?这是因为,我们是通过触发其他控件这个事件来让标签改变 Caption 属性的。 当然,你也可以让标签本身来触发 Caption 属性改变事件,如用鼠标点击标签,这时你就需要在标签对应的程序代码区输入代码了,但在实际编写中,这种情况非常罕见。毕竟,标签控件用于显示信息的本意远远超过了响应鼠标点击的意图。 2、BorderStyle(边框)属性: 本属性用来设置标签的边框类型,有两种值可选:0,代表标签无边框;1,代表标签有边框,并且具有三维效果,如图二显示的两个标签: 图二 BorderStyle 属性可以在设计界面时指定,如图三: 图三 也可以在程序中改变(但这种应用不多见),程序代码规则: 标签名.BorderStyle = 0/1(0或1,两者取一) 习题一:创建一个标签(LblShow)、两个按钮(CmdChange1、CmdChange2),点按 CmdChange1 ,标签有边框;点按 CmdChange2 ,标签无边框。 联想:在完成本题后,你可能会想到,有没有办法用一个按钮来完成本题的功能?即鼠标点击一下,标签有边框,再点一下,标签边框消除,再点一下,边框又出现,以此类推。回答是肯定的,不过,这是在以后的学习中要讲的。 答案:见本节最后的答案区。 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 习题二:一个标签(LblShow)用于显示文本;按钮1(Cmd1)可以让标签显示的字体变成隶书;按钮2(Cmd2)可以让标签显示的字体变成 13 号字;按钮3(Cmd3)可以让字体变成粗体。 答案:见本节最后的答案区。 4、Alignment(对齐)属性: 此属性用来设置标签上显示的文本的对齐方式,分别是:左对齐,0;右对齐,1;居中显示,2。可以在界面设置时设定,如图五: 图五 也可以在程序中改变,代码如下: 标签名.Alignment = 0/1/2 5、Visible(可见)属性: 本属性在大多数控件中都有,它能设定该控件是否可见。当值为 True ,控件可见;当值为 False ,控件隐藏。 控件的可见属性可以在界面设置时设定,如图六: 图六 也可以在程序中改变,代码如下: 标签名.Visible = True/False 习题三:一个标签(LblShow),在界面设置时为可见;按钮1(Cmd1),能够让标签隐藏;按钮2(Cmd2),能够让标签显现。 答案:见本节最后的答案区 二、标签控件(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 表明这个过程是“子程序”,若干个“子程序”共同组成最终的应用程序。 ()里面是用来装参数的,关于参数,我们以后讲述,如果没有参数,()里面为空。 四、答案区: 第一题: 第一个按钮的点击事件: Private Sub CmdChange1_Click() LblShow.BorderStyle = 1 End Sub 第二个按钮的点击事件: Private Sub CmdChange2_Click() LblShow.BorderStyle = 0 End Sub 第二题: 按钮1: Private Sub Cmd1_Click() LblShow.FontName = "隶书" End Sub 按钮2: Private Sub Cmd2_Click() LblShow.FontSize = 13 End Sub 按钮3: Private Sub Cmd3_Click() LblShow.FontBold = True End Sub 第三题: 按钮1: Private Sub Cmd1_Click() LblShow.Visible = False End Sub 按钮2: Private Sub Cmd2_Click() LblShow.Visible = True End Sub vb神童教程第二章第二节——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神童教程第二章第三节——综合示例一 在前面两节里,我们学到了 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、水平间距与垂直间距: 调整某几个控件的水平间距或垂直间距。 活用上面几个操作,将使你的工作事半功倍! vb神童教程第二章第四节——CommandButton 控件 在 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)事件,当点击按钮时,犹如发出了一道命令,而这也正是“命令按钮”这个说法的由来。 vb神童教程第二章第五节——单选与复选控件 在 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 If End Sub 复选按钮二: Private Sub ChkItalic_Click()  If ChkItalic.Value = 1 Then   TxtContent.FontItalic = True  Else   TxtContent.FontItalic = False  End If End Sub 复选按钮三: Private Sub ChkUnderline_Click()  If ChkUnderline.Value = 1 Then   TxtContent.FontUnderline = True  Else   TxtContent.FontUnderline = False  End If 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 ,只是条件判断方法的一种,以后我们还会学到其他的方法。 vb神童教程第二章第六节——综合示例二 在前面两节中,我们学习了命令按钮(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)得以实现的。 简单地说,选项框控件是将不同的选项分类,在某一类里只能多选一,但多个类别的交叉使用,可以完成比较复杂的多项选择。 不仅仅如此,我们还可以将单选按钮、多选按钮分组,不同组内的操作不会影响其他组的操作。如图三: 图三 分组控件的制作方法: 先在窗体上绘制合适大小的框架,然后点选单选控件或多选控件,最后将鼠标移到框架内并拖拉出选项按钮。 注意:请不要使用双击选择按钮控件然后将其拖动到分组框内的办法,否则,分组会失败。 vb神童教程第二章第七节——列表框控件 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、本节提到了变量,关于它们的详细情况,我们将在以后学习,目前大家只需要知道,这里的变量只是个临时工,主要用来储存一些临时数据。 vb神童教程第二章第八节——组合框控件  组合框控件(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 vb神童教程第二章第九节——综合示例三 前面我们学了列表框控件(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 即复选类型,你会发现本节所编写的程序又有很多问题了,该如何解决呢?下一节见! vb神童教程第二章第十节——综合示例四 在上一节,我们制作了一个 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 键运行程序。 vb神童教程第二章第十一节——滚动条 滚动条常常用来附在某个窗口上帮助观察数据或确定位置,也可以用来作为数据输入的工具。在日常操作中,我们常常遇到这样的情况:在某些程序中,如 Photoshop ,一些具体的数值我们并不清楚,如调色板上的自定义色彩,这时,可以通过滚动条,用尝试的办法找到自己需要的具体数值。 在 Visual Basic 中,滚动条分为横向(HscrollBar)与竖向(VscrollBar)两种,命名规则为:HsbX 或 VsbX ,如 HsbShow、VsbShow ,等等。它们在工具箱上的图标如图一: 图一   选中滚动条按钮,把鼠标指针放到界面设计区,然后拖动,画出符合自己要求的滚动条,或者直接双击该按钮,自动在界面设计区生成默认大小的滚动条,如图二所示: 图二 一、滚动条控件的属性: 1、Max(最大值)与 Min(最小值)属性: 滚动块处于最右边(横向滚动条)或最下边(竖向滚动条)时返回的值就是最大值;滚动块处于最左边或最上边,返回的值最小,如图三所示: 图三 Max 与 Min 属性是创建滚动条控件必须指定的属性,默认状态下, Max 值为 32767 ,Min 值为 0 。本属性既可以在界面设计过程中予以指定,也可以在程序运行中予以改变,如: HsbShow.Min = 3 HsbShow.Max = 30 2、Value(数值)属性: Value 属性返回或设置滚动滑块在当前滚动条中的位置,如图三所示。 Value 值可以在设计时指定,也可以在程序运行中改变,如: HsbShow.Value = 24 3、SmallChange(小改变)属性: 当用户单击滚动条左右边上的箭头时,滚动条控件 Value 值的改变量就是 SmallChange,如图四: 图四 4、LargeChange(大改变)属性: 单击滚动条中滚动框前面或后面的部位时,引发 Value 值按 LargeChange 设定的数值进行改变,如图五: 图五 二、滚动条控件的事件: 与滚动条控件相关的事件主要是 Scroll 与 Change ,当在滚动条内拖动滚动框时会触发 Scroll 事件(但要注意,单击滚动箭头或滚动条时不发生 Scroll 事件),滚动框发生位置改变后则会触发 Change 事件。Scroll 事件用来跟踪滚动条中的动态变化,Change 事件则用来得到滚动条最后的值。 三、示例: 有如图六这样一个应用程序,当滚动条(HsbShow)的滚动块发生位移时,下面的显示标签(LblShow)自动显示滚动条当前的值;在拖动滚动框的过程中,显示标签(LblShow)则会显示“拖动中……”字样。 图六 1、创建界面。 其中,HsbShow 的 Min 为 0 ,Max 为 100 ,SmallChange 为 5 ,LargeChange 为 10 。 2、双击滚动条(HsbShow),进入代码编写窗口: Private Sub HsbShow_Change()  LblShow.Caption = "滚动条当前值为:" & HsbShow.Value End Sub 3、滚动条的拖动事件: Private Sub HsbShow_Scroll()  LblShow.Caption = "拖动中……" End Sub vb神童教程第二章第十二节——综合示例五 有如图一这样一个应用程序,分别拖动红、绿、蓝三个滚动框来决定文本框的背景色,另外还有一个竖向滚动条,可以用来控制文本框的大小。 图一 一、图像的着色问题: 自然界中千变万化的色彩,在电脑上可以用红绿蓝三种原色组合而成,这也正是图像处理软件中 RGB 模式的原理所在,如黑色是由皆为 0 的红绿蓝三种颜色组成,白色为皆为 255 的三原色合成,等等。 在 RGB 模式中,每种色彩最多有 255 种变化,也就是说,只要 R 、G 、B 三种色彩都在各自的 255 范围内,这种色彩就是有效的。 在 VB 中,也用 RGB 来作为色彩的描述,如文本框的背景色为白色,则表示为:Text1.Backcolor = RGB(255,255,255)。 二、VB 中对象的初值储存问题: 在VB中,常常会对某个对象进行位置移动,或者动态改变对象的尺寸,一般情况下,都会在程序调入后先对原始数据进行一些存储,以便发生位移或改变大小后能恢复原样,而这一功能,是通过初值储存来完成的。 方法是,将原始数据,如坐标值、原始长宽高,等等,赋值给某个变量,最后通过变量的调用就能完成默认状态的恢复。 三、程序设计: 1、创建如图一的程序界面。 文本框的属性: Name:TxtContent  Text:None 三个表示色彩的标签: 红色标签,Name:LblRed  Caption:红色 绿色标签,Name:LblGreen  Caption:绿色 蓝色标签,Name:LblBlue  Caption:蓝色 三个表示色彩的横向滚动条: Min:0  Max:255  SmallChange:1  LargeChange:5 显示“大小”字样的标签: Name:LblSize  Caption:大小 对文本框大小进行控制的竖向滚动条: Name:VsbSize  Min:0  Max:100  SmallChange:1  LargeChange:5 用于显示大小变化尺寸的标签: Name:LblShow  Caption:None 2、双击红色滚动条,在弹出的程序代码窗口中输入: Private Sub HsbRed_Change() TxtContent.BackColor = RGB(HsbRed.Value, HsbGreen.Value, HsbBlue.Value) End Sub 另外,就 HsbRed 的 Scroll 事件也输入上面的代码: Private Sub HsbRed_Scroll() TxtContent.BackColor = RGB(HsbRed.Value, HsbGreen.Value, HsbBlue.Value) End Sub 3、同理所得,在绿色与蓝色滚动条中输入相应代码。这样,通过滚动条控制文本框背景色的目的达到了。 4、在“通用”选项中定义全局全量,用来储存文本框的原始尺寸: Dim Iwidth As Integer Dim Iheight As Integer 5、用来改变文本框尺寸的竖向滚动条: Change 事件: Private Sub VsbSize_Change() TxtContent.Width = Iwidth * (VsbSize.Value / 100) TxtContent.Height = Iheight * (VsbSize.Value / 100) LblShow.Caption = VsbSize.Value & "%" End Sub Scroll 事件: Private Sub VsbSize_Scroll() TxtContent.Width = Iwidth * (VsbSize.Value / 100) TxtContent.Height = Iheight * (VsbSize.Value / 100) LblShow.Caption = VsbSize.Value & "%" End Sub 6、调试: 按 F5 键进行调试,发现文本框的尺寸无法调整。这是因为,没有在初始状态 下将原文本框的宽度、高度赋值给变量。 在 Form 的 Load 事件中输入以下代码: Private Sub Form_Load() Iwidth = TxtContent.Width Iheight = TxtContent.Height LblShow.Caption = "100%" End Sub 7、最后结果如图二: 图二 vb神童教程第二章第十三节——Timer 控件 在 Windows 应用程序中常常要用到时间控制的功能,如在程序界面上显示当前时间,或者每隔多长时间触发一个事件,等等。而 Visual Basic 中的 Timer(时间)控制器就是专门解决这方面问题的控件。 Timer 控制器在工具箱面板上的图标如图一: 图一 选中时钟控制器,将鼠标移到界面设计区,在窗体中拖出一个矩形就可以创建一个 Timer 控件了。跟其他控件不同的是,无论你绘制的矩形有多大,Timer 控件的大小都不会变,如图二: 图二 另外,Timer 控件只有在程序设计过程中看得见,在程序运行时是看不见的。 一、Timer 控件的属性: Timer 控件可以使用 Name 属性与 Enabled 属性,但最重要的是 Interval 即时间间隔属性。 Interval 属性决定了时钟事件之间的间隔,以毫秒为单位,取值范围为 0 ~ 65535 ,因此其最大时间间隔不能超过 65 秒,即一分钟多一点的时间。如果把 Interval 属性设置为 1000 ,则表示每秒钟触发一个 Timer 事件。 其语法格式: Timer.Interval = X ,其中,X 代表具体的时间间隔。 二、Timer 控件的 Timer (定时)事件: 当一个 Timer 控件经过预定的时间间隔,将激发计时器的 Timer 事件。使用 Timer 事件可以完成许多实用功能,如显示系统时钟、制作动画,等等。 三、示例: 有如图三这样一个应用程序,标签能够自动显示当前时间。 图三 1、创建程序界面: 界面如图四,为了便于大家观看,我们将 LblShow 的边界类型设为 1 。 另外,别忘了把 Timer1 的 Interval 属性设置为 1000 。 图四 2、在 Timer1 的 Timer 事件中输入以下代码: Private Sub Timer1_Timer() LblShow.FontSize = 30 LblShow.FontName = "宋体" LblShow.Caption = "当前时间为:" & Time End Sub 注意,Time 是 Visual Basic 中的关键詞,表示显示系统时间。 vb神童教程第二章第十四节——文件操作控件 在一个应用程序中,对文件的处理是一个比较常用的操作,如打开文件、保存文件,等等。Visual Basic 提供了三个控件对磁盘文件夹与文件进行显示与操作,它们分别是:DriveListBox(磁盘列表框)控件、DirListBox(文件夹列表框)控件,以及 FileListBox(文件列表框)控件。如图一: 图一 一、DriveListBox(磁盘列表框)控件: 在工具箱面板上,DriveListBox 控件的图标如图二: 图二 在窗口中创建的磁盘列表框可以自动显示电脑上或网络上的所有磁盘驱动器,另外,还可以通过语法设置运行时显示的驱动器名称,这就要用到 Drive 属性。 磁盘列表框名称.Drive = Drive(如 C: ,或者 D:,等等)。 比如,要在窗体启动时把当前磁盘改为 F 盘,那么: Private Sub Form_Load()   Drive1.Drive = "F:" End Sub 图三 二、DirListBox(文件夹列表框)控件: 在工具箱面板上,DirListBox 控件的图标如图四: 图四 文件夹列表框控件可以显示与设置文件夹的路径,当用户在窗口中创建 DirListBox 控件时,双击其中的文件夹,不需进行编程就能自动显示下一级的文件夹,如图五: 图五 本控件的主要属性是 Path 属性,用来返回或设置当前文件夹的路径,只能在程序运行中使用,其语法是: 文件夹列表框名称.Path = 具体的路径 比如,我们要在窗体启动时把默认显示的文件夹改为 D:\Mytool\ ,程序可以这样写: Private Sub Form_Load() Dir1.Path = "D:\Mytool\" End Sub 三、FileListBox(文件列表框)控件: 跟前面两个控件一样,本控件能够自动显示符合条件的文件清单。如图六: 图六 文件列表框控件主要有两个属性,即 Path 属性与 FileName 属性,前者代表文件的路径,从显示路径的功能上来说,比后者更简便一些;后者则用来返回或设置所选文件的路径与文件名,其语法是: 文件列表框名称.FileName = 路径 比如,我们要在窗体启动时将 E:\稿件 目录下的所有 ZIP 文件列出来,程序可以这样写: Private Sub Form_Load() File1.FileName = "E:\稿件\*.zip" End Sub 结果如图七: 图七 四、三个控件的连接: 上面我们就三个控件进行了分别的学习,在程序中,它们却是互不关连的,并不是只要在窗体中创建了它们,然后对某个控件(如磁盘列表框)进行操作,其他控件就会自动显示相应的磁盘下的文件,这需要用程序进行实现。 1、将磁盘列表框的操作赋值给文件夹列表框的 Path 属性,在磁盘列表框的 Change 事件中输入如下代码: Private Sub Drive1_Change()   Dir1.Path = Drive1.Drive End Sub 2、对文件夹列表框控件进行的操作,直接影响文件列表框所显示的内容: Private Sub Dir1_Change()   File1.Path = Dir1.Path End Sub 最后结果如图八: 图八 vb神童教程第二章第十五节——窗体 窗体犹如一块画布,在设计时是程序的设计区域,而在运行程序时,每个窗体对应于一个窗口。 一、窗体的结构: 窗体结构与普通 Windows 下的窗口非常相似,如图一: 图一 系统菜单:Form1.ControlBox,点击它可以弹出菜单命令。 标题栏:Form1.Caption,显示的窗口标题,如本例中的“Form1”。 最小化按钮:Form1.MinButton 。 最大化按钮:Form1.MaxButton 。 二、窗体的主要属性: 1、名称:命名规则为 FrmX ,如 FrmShow 、FrmFirst ,等等,主要用于程序调用。 2、AutoRedraw(自动重画): 本属性控制图像的重建,常用于多窗体程序设计中,语法如下: 窗体名称.AutoRedraw = True/False 当 AutoRedraw 设置为 True 时,那么本窗体被另外的窗体覆盖后,又回到此窗体时,将自动重新刷新或重画窗体上的所有图形;如果是 False ,则必须通过事件过程来设置这一操作。 默认属性为 False。如图二: 图二 3、BackColor(背景色)与 ForeColor(前景色): 前者用来指定窗体的背景色,如图三: 图三 后者用来指定文本或图形的前景色,如图四: 图四 4、Height(高度)与 Width(宽度): 这两个属性用来指定窗体的高度与宽度,其单位是 Twip ,即 1 点的 1/20 (1/1440 英寸)。 如要让窗体的高度变为 200 ,宽度变为 300 ,那么程序应该写成: Private Sub Form1_Click()  Form1.Height = 200  Form1.Width = 300 End Sub 5、Top(顶部)与 Left(左边距)属性: 通过这两个属性可以控制窗体的坐标位置,默认单位是 Twip 。 要注意的是,随对象的不同,这个 Top 与 Left 的意义不同。当对象是窗体,Top 指的是窗体顶部与屏幕顶部的相对距离,Left 指的是窗体左边界与屏幕左边界的间距;当对象是其他控件时,它们分别表示控件顶部、左边与窗体顶部、左边之间的距离,如图五所示: 图五 语法示例: Private Sub Form1_Click()  Form1.Top = 200  Form1.Left = 300 End Sub 上面的语句会把 Form1 窗体移动到距屏幕顶部 200 Twip ,距屏幕左边距 300 Twip 的地方。 6、Visible(可见)属性: 当一个对象的 Visible 属性设置为 False 时,程序运行时不能看见;只有当 Visible 属性值变为 True 时,才能被看见。 本属性虽然简单,但却是常常需要用到的,请大家牢记在心。 三、窗体的主要事件: 1、Load(装入)事件: 窗体最主要的事件,用来在启动程序时对属性和变量进行初始化。程序一旦运行,将自动触发本事件。 2、UnLoad(卸载)事件: 既然有装入事件,自然就有卸载事件,它的作用是从内存中清除一个窗体。卸载后如果要重新装入窗体,那么新装入的窗体上的所有控件都需要重新初始化。 3、Click(单击)与 DblClick(双击)事件: 在以前的学习中,我们已经接触到了 Click 事件,实际上,对一个严谨的程序来说,这种应用不是很普遍,大家知道就行了。 vb神童教程第三章第一节——图形框与图像框控件 Visual Basic 为编程人员提供了强大的绘图功能支持,在本章,我们将学会基本的绘图方法。   在 VB 中,主要通过两种办法进行图像绘制:一种是利用 ActiveX 控件,如用图形框显示图片;另外一种是通过使用 VB 语言本身的函数和方法,通过在屏幕上绘制点、线和图形来制作。 一、图形框控件的主要属性: 图形框控件(PictureBox)可以用来显示位图、JPGE、GIF、图标等格式的图片,在工具箱面板中,图形框控件的图标如图一: 图一 1、Name 属性: 命名规则为:PicX ,如 PicMove 、PicShow ,等等。 2、Picture(图片)属性: 本属性用来返回或设置控件中要显示的图片,可以通过属性窗口进行设置。如果要在程序运行过程中载入图片,常常使用 LoadPicture 函数,其语法规则为: 对象.Picture = LoadPicture("图形文件的路径与名字") 如:PicMove.Picture = Loadpicture("c:\Picts\pen.bmp") 3、AutoSize(自动显示)属性: 本属性决定了图形框控件是否自动改变大小以显示图片的全部内容。当值为 True ,图象可以自动改变大小以显示全部内容;当值为 False ,则不具备图象的自我调节功能。 二、图形框控件的主要事件: 它可以接收 Click(单击)事件与 DblClick(双击)事件,还可以在图片框中使用 Cls(清屏)、Print 方法。在实际使用过程中,它多是作为一种图形容器出现,所以常常是跟其他控件搭配使用的,如点击一个按钮,图形框自动装入图片,等等。 三、图像框控件(Image)的主要属性: 跟图形框一样,图像框控件也具有诸如 Name、Picture 等属性,以及 Loadpicture 的方法,但在图像自适应问题上有所不同。 PictureBox 用 AutoSize 属性控制图形的尺寸自动适应,而 Image 控件则用 Stretch 属性对图片进行大小调整。如图二: 图二 四、图像框与图形框控件的区别: 1、图形框是“容器”控件,可以作为父控件,而图像框不能作为父控件,其他控件不能作为图像框的子控件。 图形框作为一个“容器”,可以把其他控件放在其内作为它的“子控件”,当图形发生位移,其内的子控件也会跟着一起移动。 图三 2、图形框可以通过 Print 方法显示与接收文本,而图像框不能。 3、图像框比图形框占用内存少,显示速度更快一些,因此,在图形框与图像框都能满足设计需要时,应该优先考虑使用图像框。 vb神童教程第三章第二节——综合示例六 在本节,我们要实现两张不同图片在同一个图形框内的切换,同时可以启用与禁用图形框的自动适应功能。 图一(切换前) 图二(切换后) 一、设计: 1、创建如图一的界面: 显示标签: Name:LblShow  Caption:现在显示的是第一张图 图形框控件: Name:PicShow  AutoSize:None 自动适应复选框: Name:ChkAutoSize 图片切换按钮: Name:CmdShow  Caption:图片二 2、先在通用区声明如下变量: Dim X As Integer Dim IWidth As Integer Dim IHeight As Integer 其中,X 准备用来做为图片切换的条件,当 X 为 1 ,图片切换按钮可以切换到图片二;当 X 为 2 ,图片切换按钮可以切换到图片一。 IWidth 与 IHeight 准备用来储存图形框的初始宽度与高度,以便在图形框发生大小变化后回复到原样。 3、程序打开时自动载入图片一: 这样,图片切换按钮就应该能够切换到图片二,所以将 1 赋给 X : Private Sub Form_Load() PicShow.Picture = LoadPicture("E:\稿件\Ccidnet\vb\image\vb3-2-1-copy.gif") X = 1 End Sub 4、自动适应功能的实现: Private Sub ChkStretch_Click() If ChkStretch.Value = 1 Then IWidth = PicShow.Width IHeight = PicShow.Height PicShow.AutoSize = True Else PicShow.AutoSize = False PicShow.Width = IWidth PicShow.Height = IHeight End If End Sub 上面程序的意思是,如果复选框被选中,那么先将原始图形框的宽度与高度赋给 IWidth、IHeight ,然后再通过激活 PicShow 的 AutoSize 功能达到图形框的自动适应;如果复选框没被选中,那么禁止 PicShow 的 AutoSize 功能,然后将图形框原来的高度(现在的 IHeight)和宽度(现在的 IWidth)赋值给图形框以恢复原样。 5、图片切换: Private Sub CmdShow_Click() If X = 1 Then PicShow.Picture = LoadPicture("E:\稿件\Ccidnet\vb\image\vb3-2-2-copy.gif") LblShow.Caption = "现在显示的是第二张图" CmdShow.Caption = "图片一" X = 2 Else PicShow.Picture = LoadPicture("E:\稿件\Ccidnet\vb\image\vb3-2-1-copy.gif") LblShow.Caption = "现在显示的是第一张图" CmdShow.Caption = "图片二" X = 1 End If End Sub 在上面的程序中,先对 X 进行判断,如果 X 为 1 ,那么图形框显示图片二,显示标签改变成“现在显示的是第二张图”字样,作为图形切换的按钮, Caption 变成“图片一”,然后再让 X 为 2 好进入另外一种情况;当 X 为 2 ,那么图形框显示图片一,显示标签与切换按钮发生相应变化。 二、联想: 记得第一次设计这个程序时,并没有引入 X 这个辅助变量,而是通过鼠标点击的动作来进行判断的,即,当原始图形框中显示的是图片一,那么鼠标点击一次,即奇数次,图形框中会切换到图片二;当鼠标点击第二次,即偶数次,图形框可以切换到图片一;以此类推。所以可以通过次数取余,如果余数为 0 ,那么图形框可以切换到图片一;余数为 1 ,图形框可以切换到图片二。 具体程序大家可以自行思考,此处不再赘述。 vb神童教程第三章第三节——直线与形状控件 利用直线与形状控件,可以使窗体上显示的内容更为丰富,如在窗体上增加简单的线条和实心图形,等等。 利用直线控件,可以建立简单的直线,通过修改其属性,还可以改变直线的粗细、色彩,以及线型。 通过设置形状的属性,用户可以画出圆、椭圆,以及圆角矩形,同时还能设置形状的色彩与填充图案。 主要属性: 除了其他通用属性外,直线与形状控件还具有一些比较独特的属性。 1、BorderStyle(边框类型),实用于直线与形状。 TransParent:透明,边框不可见。 Solid:实心边框,最常见。 Dash:虚线边框。 Dot:点线边框。 Dash-Dot:点划线边框。 Dash-Dot-Dot:双点划线边框。 Inside Solid:内实线边框。 2、FillStyle(填充类型),实用于形状。 Solid:实心填充。 TransParent:透明填充。 Horizontal Line:以水平线进行填充。 Vertical Line:以垂直线进行填充。 Upward Diagonal:向上对角线填充。 Downward Diagonal:向下对角线填充。 Cross:交叉线填充。 Diagonal Cross:对角交叉线填充。 3、Shape(形状),实用于形状。 Rectangle:矩形。 Square:正方形。 Oval:椭圆形。 Circle:圆形。 Rounded Rectangle:圆角矩形。 Rounded Square:圆角正方形。 vb神童教程第三章第四节——常用的绘图方法 除了前面谈到的用控件显示与绘制图形的方法外,VB 还提供了一组庞大的方法用来绘制点、线、面,以及设置前景、背景色等各种方法。 一、设置当前绘图点: 在 VB 中,可以通过设置窗体或图形框的 CurrentX 与 CurrentY 属性来设置当前绘图点。CurrentX 与 CurrentY 决定了绘制或显示的起始坐标,在设计时,这两个属性不可用。 二、绘制点、线、面的方法: 1、点的绘制法: 在指定对象(如窗体、图形框)上的指定位置处绘制点,还可以为点指定颜色,语法如下: 对象名.Pset (X,Y),[Color] X ,Y 分别为点的水平与垂直坐标,Color 为点的颜色,是可选项。 2、直线的绘制法: 在对象上绘制直线,语法如下: 对象名.Line (X1,y1) - (X2,Y2), [Color] (X1,Y1) 是直线的起点,(X2,Y2)是直线的终点,Color 为可选项。 如图一: 图一 2、图形框的代码是: Private Sub Picture1_Click() Picture1.Line (350, 1020)-(2050, 1020) End Sub 3、绘制矩形: 用 Line 方法还可以绘制矩形,语法如下: 对象名.Line (X1,Y1) - (X2,Y2), [Color], B ,[F] 其中,(X1,Y1) 是矩形的左上角座标,(X2,Y2)是矩形右下角座标,Color 为矩形边框的颜色,使用参数 B 而不用 F ,那么矩形用当前的填充色(FillColor)与填充方式(FillStyle)对矩形进行填充;如果使用了参数 F ,那么矩形以边框的颜色进行填充。如图二: 图二 特别注意,用 Line 画矩形框,如果不用其他参数,那么 B 与坐标(X2,Y2)之间应该有两个逗点,一个是紧跟坐标2,一个表示 Color 省略了,如:Picture1.Line (500,500) - (1000,1000),,B 4、绘制圆、椭圆、弧: 用 Circle 方法可以绘制圆、椭圆与弧,语法如下: 对象名.Circle (X,Y), Radius, [Color,start,end,aspect] 其中,(X,Y)是圆、椭圆或弧的圆心坐标,Radius 是半径,这两个参数是必须项;Color 是圆的轮廓色,Start 与 End 是弧的起点与终点位置。其范围是 -2 —— 2Pi ;Aspect 是圆的纵横尺寸比,默认值是 1 即圆,如图三: 图三 三、颜色、前景与背景色的设置: 1、颜色函数 RGB() 在前面关于卷动条控件(综合示例五)的讲解中,我们讲述了色彩的设置问题,而这正是 RGB 颜色函数的原理所在。色彩设置的方法如下: RGB(Red,Green,Blue) 不要忘了,Red、Green、Blue 每种色彩各有 0——255 种成份,三种色彩不同参数的搭配,就产生了丰富多采的现实世界。 2、前景色的设置: 通过对 ForeColor(前景色属性)的设置,可以返回或设置对象的前景色。 3、背景色的设置: 对 BackColor 属性进行设置,就可以返回或设置对象的背景色。 4、图形的清除: 用 Cls 方法可以清除窗体或图形框在程序运行中绘制的图形,语法如下: 对象名.Cls vb神童教程第四章第一节——菜单界面设计 任何一个应用程序,都需要通过各种命令来达成某项功能,而这些命令,大多数是通过程序的菜单来实现的,如我们常常用到的记事本的菜单: 图一 VB 提供了一个菜单编辑器,专门用来制作各式各样的菜单,它在标准工具栏中的图标如图二: 图二 双击该图标,弹出如图三的窗口,通过这个窗口,我们就可以制作菜单了。 图三 当然,程序光是有菜单还不行,它只是为用户提供了便捷的操作接口,程序功能的最终实行,还必须通过给这些菜单输入复杂的程序才能得以实现。 下面,我们以 Windows 自带的笔记本为例,介绍如何用 VB 制作菜单。 一、菜单制作: 1、双击如图二的菜单编辑器图标,然后弹出如图三的编辑窗口。 2、标题:显示在菜单中的文本,这里,我们输入“文件(&F)”字样。 (&F) 是什么东西?这是为了方便用户使用键盘操作菜单,当程序运行时,(&) 字样不会出现,而是在字母 F 下加上一条横线,这表示,只要用户在按住 Alt 键的同时再按下 F 键,就相当于用鼠标点击“文件”这个菜单命令了。也就是说,文件菜单的快捷键是 Alt+F 。 名称:本菜单在程序中的名称,主要用作程序调用,因此记得用英文名,另外,名字最好一目了然,这里,我们将“文件”菜单命名为 MenuFile 。 “文件”菜单制作完毕,如图四: 图四 3、点击菜单编辑器上的“下一个”按钮,制作下一个菜单,这时,我们看到,编辑区域自动提到了下一行,如图五: 图五 点击向右按钮,本行前面出现了四个小点,表示本菜单降了一级,是二级菜单(依此类推,如果要制作三级菜单,只需要再点一下向右按钮进行降级就行了)。然后用第二步的方法,制作“新建”(MenuNew)、“打开”(MenuOpen)、“保存”(MenuSave)、“另存为”(MenuSaveOther)菜单,结果如图六: 图六 上面讲到了用 & 符号制作快捷键的方法,这里我们再使用 VB 菜单编辑器中的“快捷键”定制方法制作快捷键。 找到“新建”菜单,先在“新建(&N)”字样后面添加六个空格,以便后面显示的快捷键跟菜单名之间有点空隙,然后在快捷键下拉列表中选择 Ctrl+N ,这表示在按住 Ctrl 键的同时按 N 键就能使用“新建”命令了,如下图: 4、制作菜单分隔线: “另存为”菜单下面是条分隔线,那么分隔线如何表示呢?很简单,只需在“标题”框中输入“-” 就行了,命名为 MenuSperate1 ,然后点按“下一个”按钮制作下面的菜单。如图七: 图七 5、同理可做“页面设置”(MenuPage)、“打印”(MenuPrint)、“分隔线二”(MenuSeprate2)、“退出菜单”(MenuQuit),如图八: 图八 6、制作“编辑”菜单: 由于“编辑菜单”是一级菜单,所以在完成“退出”菜单,并点按“下一个”按钮后,别忘了点按向左按钮,将当前菜单进行升级,这时可以看到,本行前面的四个小点消失了,如图九: 图九 7、根据前面学到的知识,我们制作“编辑”(MenuEdit)、“撤消”(MenuUndo)、“分隔条三”(MenuSeprate3)、“剪切”(MenuCut)、“复制”(MenuCopy)、“粘贴”(MenuPaste)、“删除”(MenuDel)、“分隔条四”(MenuSeprate4)、“全选”(MenuSelectAll)、“时间/日期”(MenuDate)、“分隔条五”(MenuSeprate5)、“自动换行”(MenuWrap)、“设置字体”(MenuFont)菜单。如图十: 图十 8、添加 RichText 控件: 最后在窗体内添加一个 RichText 控件,结果如图十一: 图十一 在默认的工具箱面板中,RichText 控件没有罗列出来,大家可以用鼠标右键点击工具箱面板,在弹出的面板中选择“部件”,然后在弹出的窗口中找到“Microsoft Rich Textbox Control 6.0”,勾选本控件的复选框,最后“确定”就行了,如图十二: 图十二 二、菜单属性设置: 对各个菜单的属性设置,可以在制作菜单的过程中进行,也可以在菜单设计完毕后集中进行处理。 1、菜单的“有效”性: 只有当菜单处于“有效”状态时才能被使用。 对于一个新的空白文件来说,撤消、剪切、复制、粘贴的命令缺少操作对象,所以在初始状态下,它们应该是“无效”的。 打开菜单编辑器,找到“撤消”菜单,然后将“有效”复选框前的勾去掉,这样,“撤消”菜单无效了,如图十三: 图十三 同理,将“剪切”、“复制”、“粘贴”三个菜单变为“无效”。 2、复选菜单: 在记事本中,“自动换行”可以对文本的显示进行换行控制,默认状态为“非自动换行”模式,点击一次则启动“自动换行”模式,再点击一次就取消“自动换行”,象这种菜单,我们称为“复选菜单”。 复选菜单的制作非常简单,只需找到要作为复选菜单的那个菜单,然后勾选“复选”按钮就行了,如图十四: 图十四 但是,此时的复选按钮还不健全,需要代码的支持方能正常使用,具体情况在下一节的示例中讲述。 三、根据本节学到的知识,请大家自行设计笔记本中余下的菜单。 vb神童教程第四章第二节——综合示例七 有如图一这样一个小程序,通过“菜单”下的色彩设置,可以将窗体的背景分别改为“红”、“绿”、“蓝”色,点击“菜单”下的“退出”,则自动退出程序。 图一 一、界面设置: 根据第一节学到的知识,我们制作一个如图二的菜单。 图二 需要注意的是,“菜单”为一级,“色彩设置”、“退出”为二级、“红色”、“绿色”、“蓝色”为三级菜单,根据图二中每行前面点的多少可以判断出来。 另外,不要忘记勾选“红”、“绿”、“蓝”三种色彩的菜单前的“复选”选项。 二、输入程序代码: 1、退出菜单: 在 VB 中,End 是专门用来退出程序的命令,因此,我们在“退出菜单”中输入如下代码: Private Sub MenuQuit_Click() End End Sub 这样,只要点击本菜单,自动退出程序。 2、复选菜单的判断: 在 VB 中,可以用如下语法对复选菜单进行判断: 复选菜单名.Checked = True/False 当值为 True ,复选菜单被选中;值为 False ,菜单未被选中。 3、我们要让程序在初始状态下保持本色,在 Form 的装入事件中输入以下代码: Private Sub Form_Load() MenuRed.Checked = False MenuGreen.Checked = False MenuBlue.Checked = False End Sub 这段程序,让三个复选菜单都处于未被选中状态(在程序运行时起作用,在设计过程中,三个复选菜单始终是处于选中状态)。 4、当按下红色菜单(MenuRed): Private Sub MenuRed_Click() MenuRed.Checked = True MenuGreen.Checked = False MenuBlue.Checked = False Form1.BackColor = vbRed End Sub 这段代码,让“红色菜单”处于选中状态,而其他颜色的菜单处于未被选中状态,同时将窗体的背景色变为红色(VbRed)。 5、当按下绿色菜单(MenuGreen): Private Sub MenuGreen_Click() MenuRed.Checked = False MenuGreen.Checked = True MenuBlue.Checked = False Form1.BackColor = vbGreen End Sub 绿色菜单处于选中状态,其他菜单非选中,同时窗体背景色变为绿色。 6、按下蓝色菜单: Private Sub MenuBlue_Click() MenuRed.Checked = False MenuGreen.Checked = False MenuBlue.Checked = True Form1.BackColor = vbBlue End Sub 蓝色菜单处于选中状态,其他菜单非选中,同时窗体背景变为蓝色。 7、最后按 F5 键,如何,程序正常运行了吧? 三、联想: 本节我们讲到复选菜单是如何对选中进行判断的,那就是看 Checked 值是否为 True 。 前面我们学过单选按钮(OptionBUtton)、复选按钮(CheckBox),它们也有是否被选中的判断,那么,它们有什么不同呢? 注意,单选按钮是否选中的判断: 单选按钮名.Value = True/False 。由于单选按钮只能二选一或多选一,所以往往不需判断,只需响应 Click 事件就行了。 复选按钮的判断: 复选按钮名.Value = 0/1/2 。由于复选按钮可以一次多选,所以对它的判断最为复杂,常常需要用到诸如 If……Then 等条件语句进行判断。但它跟复选菜单不同的是,复选菜单常常只能多中选一,比如上面例子中,选择了“红色菜单”就不能选择“蓝色菜单”,等等。 记不清楚的朋友可以回头复习一下,此处不再赘述。 vb神童教程第四章第三节——动态增减菜单 我们在上一节示例的基础上,来制作如图一的小程序,每点击一次“增加信息”命令,菜单上会自动增加一个“信息”菜单,每点击一次“清除菜单”命令,程序自动清除当前信息菜单;当菜单回复原样,即只剩“信息”菜单时,“清除菜单”无效。 图一 一、界面设置: 在第二节最终结果的基础上,创建如图一的界面,需要注意的是,“信息”菜单(MenuHint)必须在前面的“索引”框中填入数字 0,如图二: 图二 除了前面谈到的用控件显示与绘制图形的方法外,VB 还提供了一组庞大的方法用来绘制点、线、面,以及设置前景、背景色等各种方法。 一、设置当前绘图点: 在 VB 中,可以通过设置窗体或图形框的 CurrentX 与 CurrentY 属性来设置当前绘图点。CurrentX 与 CurrentY 决定了绘制或显示的起始坐标,在设计时,这两个属性不可用。 二、绘制点、线、面的方法: 1、点的绘制法: 在指定对象(如窗体、图形框)上的指定位置处绘制点,还可以为点指定颜色,语法如下: 对象名.Pset (X,Y),[Color] X ,Y 分别为点的水平与垂直坐标,Color 为点的颜色,是可选项。 2、直线的绘制法: 在对象上绘制直线,语法如下: 对象名.Line (X1,y1) - (X2,Y2), [Color] (X1,Y1) 是直线的起点,(X2,Y2)是直线的终点,Color 为可选项。 如图一:在程序中,只要在“索引”文本中输入了数字,就代表这个菜单成为了一个“菜单数组”,通过这个“菜单数组”可以实现菜单的动态增加与清除。 二、程序代码: 1、为“信息菜单”指定变量: 对于增加或清除菜单命令,我们可以这样看:原始的“信息菜单”为 MenuHint(0) ,这也是索引值为 0 的意义所在;那么增加的一个信息菜单就应该为 MenuHint(1),再增加一个,就应该为 MenuHint(2),依此类推;清除一个信息菜单也类似,如果当前是 MenuHint(X),那么清除一个后应该为 MenuHint(X-1),依此类推。 指定索引值为 HintNumber ,那么增加时,应该是 HintNumber = HintNumber + 1 ;清除时,应该是 HintNumber = HintNumber -1 。 2、变量的作用域: 一个变量的作用域倒底有多大?这得由变量的类型来决定。当一个变量只在某一个过程或事件(如某个按钮的单击事件)中起作用,那么它就是局部变量,可以在事件中直接定义;当一个变量可以在整个窗体内供使用,那么它可能是窗体层变量或全局变量,凡是在这个窗体上的事件都可以对这个变量进行引用,这种变量只能在“通用”过程中进行“声明”。 因为 HintNumber 既要在“增加菜单”事件中引用,又要在“清除菜单”事件中引用,所以我们将它作为窗体层变量在“通用”过程的“声明”中对其进行定义,如图三: 图三 图三中的代码如下: Dim HintNumber As Integer 3、在窗体的载入事件中让 HintNumber 为初始值 0 ,再加上原来的代码,结果如图四: 图四 4、“增加信息”菜单的 Click 事件: Private Sub MenuAdd_Click() HintNumber = HintNumber + 1 Load MenuHint(HintNumber) MenuHint(HintNumber).Caption = "信息" & HintNumber End Sub 上面程序的意义在于,先计算 HintNumber + 1 并将结果赋给新的 HintNumber ,然后通过 Load 命令打开一个新菜单 MenuHint(HintNumber) ,并让新菜单的标题变成“信息X”,其中,X是数字,表示这是第几个信息菜单。 5、“清除信息”菜单的 Click 事件: Private Sub MenuClear_Click() If HintNumber = 0 Then Exit Sub Else Unload MenuHint(HintNumber) HintNumber = HintNumber - 1 End If End Sub 上面的代码,先对 HintNumber 值进行判断,当 HintNumber 为 0 即程序的初始状态时,直接退出当前过程(Exit Sub 是退出当前过程的命令,切记);如果 HintNumber 不为 0 ,那么卸载索引值最高的信息菜单,即 MenuHint(HintNumber) ,然后讲算 HintNumber -1 并将结果赋给新的 HintNumber ,并最后退出条件判断。 6、“清除信息”菜单的“有效性”: 如果程序处于初始状态,即“信息菜单”的索引值为 0 ,那么“清除信息”命令无效,否则有效。由于只有先点击“帮助菜单(MenuHelp)”才能弹出“清除信息菜单(MenuClear)”,所以可以在 MenuHelp 的点击事件中输入以下代码: Private Sub MenuHelp_Click() If HintNumber = 0 Then MenuClear.Enabled = False Else MenuClear.Enabled = True End If End Sub 7、测试: 按键盘上的 F5 键,对程序进行最终的测试。 三、提醒: 本节最重要的是掌握诸如 HintNumber 这种辅助变量,它将鼠标的点击动作用数字的形式加以诠释,通过值的加减来完成菜单的动态增加与清除。 这种辅助变量的使用,在 VB 中几乎是无处不在的,如前面我们在讲 For……Next……的语法时说的作为累加器的变量。 另外,从上面的例子我们可以看出, Load/Unload 不仅适用于窗体的装入与卸载,同时还适用于菜单的装入与卸载。 vb神童教程第四章第四节——基本的窗体操作 在前面的教程中,我们讲到了窗体的主要属性与事件,而本节我们主要讲述窗体的一些窗口运用。本节知识对于后面“多文档文件”的创建非常重要,所以希望大家好好掌握。 一、添加窗体: 在 VB 中每创建一个新文件,自动会生成一个新窗体,如果想在本窗体的基础上再添加一个窗体,那么应该如何做呢? 1、选择工程/添加窗体命令,弹出如图一的窗口: 图一 2、选择你需要的窗体,然后点按“打开”就行了,结果可以在“工程”窗口中看到,如图二: 图二 二、清除窗体: 在“工程”窗口中选中欲被清除的窗体,然后鼠标右键,在弹出的菜单中选择“移除……”命令。如图三: 图三 三、窗体的显示属性: 多窗口文件,往往是启动时打开主窗口,通过一些命令再打开其他窗口,那么,如何对窗口是否显示进行设置呢? 1、选择“工程/工程属性”菜单命令,在弹出的窗口中找到“启动对象”,然后从中选择文件打开时的主窗口是哪个,如图四: 图四 2、其他窗体的载入: 我们可以在主窗口中设置菜单或按钮,并在该菜单或按钮的代码区输入如下代码: Form2.Show 1 其中,Show 是显示窗体的一种方法,1 是窗体的显示模式即 Mode ,当值为 0 即非模态窗体时(常态窗口),允许用户在当前程序中切换到其他窗口;当值为 1 即模态窗体时,用户不能在各个窗口间切换。 3、窗体在程序中的三种状态: 未装入:窗体没进入程序,不占用程序资源,可以通过 Unload 方法卸载窗体。装入但不显示:可以用 Load 方法将窗体载入内存,随时准备显示。 显示:用 Show 方法可以显示窗体,如果窗体已装入内存,那么直接 Show ;如果窗体还没装入内存,Show 可以先用 Load 的方法将窗体载入内存,然后再显示出来。 载入窗体:Load FormX 卸载窗体:Unload FormX 显示窗体:FormX.Show Mode vb神童教程第四章第五节——多文档程序 在 Windows 中,文档分为单文档(SDI)和多文档(MDI)两种,如我们熟悉的“记事本”就是一个典型的单文档程序,它最明显的特点是一次只能打开一个文件,当新建一个文件时,当前文件自动被替换掉。 多文档界面,如 Word ,允许用户同时打开多个文件进行操作。在多文档界面中,有一个窗体叫做主窗体(又称为 MDI 窗体),其他窗体称为子窗体。子窗体始终处在主窗体内部,主窗体的位置移动会导致子窗体的位置发生相应变化。如图一: 图一 一、多文档程序的建立: 多文档程序至少有两个窗体,一个主窗体和一个子窗体或多个子窗体,主窗体是其他窗体的容器。 1、创建一个新工程,然后选择工程/工程属性菜单命令,加入如图二的主窗体: 图二 2、在“项目”窗口中双击 Form1 切换到 Form1 ,然后将其 MDIChild 属性设为 True ,如图三: 图三 3、按 F5 键运行程序,结果如图四: 图四 4、控制程序的打开状态: 如果要让程序打开时自动载入 Form1 窗口,那么在如图五的工程属性窗口中选择“启动对象”为 Form1 ;如果不想显示子窗体,那么只需在“启动对象”中选择 MDIForm1 就行了。 图五 5、子窗体的显示: 假设工程的启动对象为 MDIForm1 ,那么如何显示子窗体 Form1 呢? 可以在主窗体中加入菜单,或者直接用 Load 的方法,如下: Private Sub MDIForm_Load() Form1.Show 0 End Sub 这段代码将 Form1 显示出来,并呈非模态模式。 二、主窗体与子窗体的标题: 当主窗体与子窗体都呈显现状态时,把子窗体最大化,你会发现窗体的标题变成了主窗体标题加上子窗体标题,如图六: 图六 三、主窗体与子窗体的菜单: 在 VB 中,如果子窗体载入,那么主窗体的菜单将被子窗体的菜单替换;只有当主窗体中没有子窗体时才能显示主窗体的菜单,如图七、图八、图九、图十: 图七 图八 图九 第 26 页 共 42 页
/
本文档为【VB神童教程:跟我来学VB(图文并茂)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索