程序设计基础-Visual Basic(2019秋)

沈阳师范大学 刘立群

目录

  • 认识 Visual Basic
    • ● 认识 Visual Basic
    • ● 对象的属性、事件和方法
    • ● 控件的容器-窗体
    • ● 文本编辑工具-文本框
    • ● 命令按钮和标签
  • 程序设计基础
    • ● 语句和语法规则
    • ● 数据类型和常量变量
    • ● 运算符与表达式
    • ● 常用内部函数
    • ● 输入与输出
  • 基本控制结构和算法
    • ● 程序结构与算法
    • ● 选择结构的语句实现
    • ● 循环结构的语句实现
    • ● 穷举和递推问题求解
    • ● 嵌套循环解百钱百鸡问题
    • ● 星形矩阵的显示问题
  • 常用标准控件
    • ● 选择控件和滚动条--设置文字格式
    • ● 列表框及组合框—购票系统
    • ● 计时器与图片控件—自动变换的交通灯
    • ● 图形操作—小球运动
  • 数组和过程
    • ● 数组的定义与一维数组的应用
    • ● 二维数组
    • ● 控件数组
    • ● 自定义过程
    • ● 参数传递
    • ● 变量的作用域
  • 键盘鼠标事件与菜单设计
    • ● 鼠标键盘事件--小鸡吃虫游戏
    • ● 菜单程序设计--控制移动字幕
  • 通用对话框与文件操作
    • ● 通用对话框与文件操作
    • ● 文件操作--打开保存数据实例
列表框及组合框—购票系统

列表框和组合框

列表框(ListBox)提供一个项目清单给用户从中进行选择,它允许用户用鼠标选择一个或几个项目。当项目超出了列表框设计时的高度,系统会自动为列表框添加一个垂直滚动条。

组合框(ComboBox)是兼有文本框和列表框功能的控件,用户可以在组合框的编辑区中用键盘输入所需要的项目,也可以像列表框一样,通过鼠标从列表中选择所需要的项目(但只能从中选择一项)。

一、列表框常用属性、事件和方法

列表框中的项目既可以通过属性窗口手动添加,也可以在代码中用语句自动添加。添加进来的项目内容都被存放在列表框的List属性中,该属性是一个字符串型数组。用户选择项目、添加项目、删除或清除项目等操作,就是围绕这个数组进行的。

1.常用属性

⑴ List属性

该属性是一个字符串型数组,用于存放列表框的各个选项。List数组的下标从0开始,例如,在图1中,若列表框的名称为List1,则列表框中第一项,List1.List(0)的值是“孙扬”,第四项List1.List(3)的值是“李剑”。

向List数组添加元素(即向列表框添加选项)有两种方法。

方法一:在设计阶段使用属性窗口添加。选定列表框后,在属性窗口中打开List属性依次添加项目,每一项结束后按“Ctrl+回车”键换行,继续输入下一项。

方法二:在程序中用代码添加。用代码添加项目,要用到列表框的AddItem方法。具体参见本节中列表框的常用方法。

⑵ ListCount属性     

该属性值为整型,用来返回的是列表框中选项的数量。该属性只能在程序中设置或引用。

由于存放列表框选项的数组List的下标从0开始,所以在程序中经常用ListCount-1表示列表中最后一项的下标。而List1.List(ListCount-1)表示列表框中最后一项。

ListIndex属性

该属性值为整型,用来设置或返回列表框中被选中的选项在List数组中的下标。如果未选中任何选项,那么ListIndex的值为-1。该属性只能在程序中用代码设置或引用。 

Selected属性

该属性值是一个逻辑型数组,用于存放列表框的各个选项的选定状态。Selected数组的下标从0开始,数组元素的值表示对应下标的列表框项目是否被选中。例如,List1.Selected(2)的值为True表示第3项“曲南南”被选中,如为False表示未被选中。该属性只能在程序中设置或引用。

⑸ Sorted属性

该属性值为逻辑型,用来设置列表框中的选项是否按字母数字的升序排列。该属性只能在属性窗口中进行设置。

True:各选项按字母数字升序排列。

False(默认值):各选项按加入列表框的先后顺序排列。

⑹ Text属性

该属性值为字符串型,用来返回列表框中被选中选项的文本内容。该属性只能在程序中引用。

被选中选项的文本内容也可以用List数组的当前元素值来表示。例如,在图1所示的列表框中选中了“曲南南”,那么:

List1.Text="曲南南"

List1.List(List1.ListIndex)="曲南南"

Multiselect属性

该属性值为整型,用来设置列表框的选择方式。该属性只能在属性窗口进行设置。

0—None(默认值):禁止多项选择。

1—Simple:简单多项选择。在这种方式下,用户单击鼠标或按空格键直接可以实现多选。

2—Extended:扩展多项选择。在这种方式下,按住Ctrl键再单击鼠标或按空格键可以选择不连续的多项;按住Shift键再单击鼠标或按空格键可以选择连续的多项。

⑻ SelCount属性

该属性值为整型,用来返回列表框中被选中选项的数量。

⑼Style属性

该属性值为整型,用来设置列表框的外观样式。如图3所示。

0—Standard(默认):标准样式。

1—CheckBox:复选框样式。在这种样式下,单击项目前的复选框完成选择。

⑽ Columns属性

该属性值为整型,用来设置列表框的列数。默认值为0。

0(默认值):表示所有项目呈单列显示。

大于等于1:允许多列显示。

2.常用事件

⑴ Click

当单击列表框的项目时触发该事件。

⑵ DblClick

当双击列表框的项目时触发该事件。

⑶ Scroll

当拖动列表框的滚动条时触发该事件。

3.常用方法

列表框中的选项可以在设计阶段通过属性窗口添加,也可以在程序中用AddItem方法添加,用RemoveItem或Clear方法删除。

⑴ AddItem方法

格式:[对象名.]AddItem 项字符串[,项索引号]    

功能:向列表框中添加新项目

说明:

对象可以是列表框或组合框。

项字符串必须是字符串表达式。

项索引号决定新增选项在列表框或组合框中的序号(即List数组元素的下标,从0开始),如果省略项索引号,则把新增选项添加到所有项目的末尾。

例如:List1.AddItem “刘月”              ‘在列表框1末尾追加新选项“刘月”

List1.AddItem “王洋” ,2                 ‘在列表框1的第3项前插入新选项“王洋”

⑵ RemoveItem方法

格式:[对象名.]RemoveItem项索引号

功能:在列表框中删除指定的选项

说明:

对象可以是列表框或组合框。

项索引号是被删除选项在列表框或组合框中的序号(即List数组元素的下标)。

例如:List1.RemoveItem 2                   ‘删除下标为2的项目,即第3项

List1.RemoveItem List1.ListIndex     ‘删除被选中的项目

⑶Clear方法

格式:[对象名.]Clear

功能:清除列表框中的所有选项

说明:对象可以是列表框、组合框或剪贴板。

例如:List1.Clear       

=================================================================================

                                       实验

设计利用列表框和组合框管理购票订单的系统。程序具有添加和删除订单功能。

项目说明:程序运行结果如图1所示。单击“增加”按钮时,会弹出一个输入框,在输入框中输入新项目后确定,新项目被添加到列表框中已有项目的末尾。选中列表框中的一个项目后单击“删除”按钮,该项目将从列表框中被删除。

项目分析:列表框和组合框中选中内容添加到“已选订单”列表框中,这需要使用列表框的Additem方法,删除订单使用removeitem方法,清空订单使用clear方法。如果删除订单时需要先判断订单列表框的状态。

项目设计:

1.创建界面。新建一个标准EXE工程,在窗体中放置2个列表框、3个组合框、5个标签和3个命令按钮

2.设置属性。

标签及按钮的Caption属性按视频中演示内容进行设置

List1中输入所有车次,注意换行时按alt+enter组合键,两个组合框中输入所有车站名,list2将内容清空

3.编写代码。

在确认按钮click事件中编写向list2中添加项目,内容就是车次、出发地、目的地的选中项内容

删除订单时首先要判断列表框的状态,listcount是否为0,listindex是否为-1

清空订单按钮直接用clear方法可以清除列表框所有列表项

4.运行程序

首先选择车次,然后选择出发地和目的地,单击确认按钮,则会产生一条新的订单项,单击删除订单可以删除以选中订单,如果删除时未选中或订单为空都会弹出提示消息框。

 

 

各事件过程的代码如下:

PrivateSub Command1_Click()

     List2.AddItemList1.Text + Space(3) + Combo1.Text + "->" + Combo2.Text

EndSub

 

PrivateSub Command2_Click()

  If  List2.ListCount > 0 Then

     If List2.ListIndex <> -1 Then

         List2.RemoveItem List2.ListIndex

     Else

     MsgBox "请先选择要删除订单"

  End If

Else

  MsgBox "没有订单"

EndIf

EndSub

 

PrivateSub Command3_Click()

List2.Clear

EndSub

4.运行程序

首先选择车次,然后选择出发地和目的地,单击确认按钮,则会产生一条新的订单项,单击删除订单可以删除以选中订单,如果删除时未选中或订单为空都会弹出提示消息框。