列表框

资料百科

列表框(ListBox)用于提供一组条目(数据项),用户可以用鼠回探每气标选择其中一个或者多个条目,但是不能直接编辑列表框的数据。当列表框不能同时显示所有项目时候,他将自动添加滚动条,使用户可以滚动查阅所有选项。

  • 中文名称 列表框
  • 类型 列表
  • 含义 列表框选
  • 位置 北京

释义

  列来自表框:选中一项,出现一列列表。

示例

  列表框的特点是:列表框中的项目是通过程序插入到其中的,用户无法向清单中输入数据,当选择其中的项或表便家燃目,并在用户单击一个按钮或者执行某个操作时,由应用程序完成对指定项目的具体操作。下面这个例子充分说明了列表框的这个特点,并介绍了列表框(ListBox)的常用属性。

  360百科为了学习方便,提供的源码已经作了详细的中文注释,看看源码框中的代码:

  Option Explicit

  ' 简单的列表框ListBox的例子

  '------名称-------------作用---------脸停接决方美井粒现齐简---

  ' List1、List2 列表框

  ' LefttoRightCmd 移动所选项目到另一个重问列表框(左到右)

  ' RighttoLeftCmd 移动所选项目到另一个列表框(右到左)

  ' LefttoRightCmd 移动所选项目到另一个列表框(左到右)

  ' RighttoLeftCmd 移动所选项目到另一个列表框(右到左)

 脚气和苗皮市略敌 ' List1.deleteString 删除列表似苦特动吧框List1中所选项目

  ' List2.deleteString 删除列表框失径是宪List2中所选项目

  ' List1.AddString 给列表框List1增加新项目

  ' List2.AddString给列表框List2增加新项目

  ' List1.ResetContent清空列表框List1

  ' List2.ResetContent 清空列表框List2

  '----名称----属性设置---

  ' List1列表框 Sor当各分较陈美殖ted属性设为"False"

  ' List2列表框 Sorted属性设为"True"

  ' MultiSelect属性设置为2

  ' 即List2控件中的项目总是排序的

  '--------------------------------------

  Private Sub 总清曾热功Form_Load()

  '装载窗体时,给列表中的元素赋值

  List1.AddItem "China"

  List1.AddItem "America"

  List1.AddItem "Japan"

 来易调月志衡端放 List2.AddItem "Socc耐游政石今啊水血南er"

  List2逐封酸示不散谈.AddItem "Tennis"

  List2.AddItem "Basketball"

  End Sub

  Private Sub LefttoRightCmd_Click()

  '将左边列表中所选元素移动到右边列表中

  If List1.ListIndex >;= 0 Then

  '在右边列表中增加新元素

  List2.AddItem List1.Text

  '删除左边列表中的所选元众白

  List1.RemoveItem List1.ListIndex

  End If

  End S聚已当术做如多轴取染致ub

  Private Sub List1AddCmd_Click()

  Dim ListItem As Stri国觉名特止粮规切晶白降ng

  '

  ListItem = InputBox("在列表中输入新项目")

  '向列表中加入新项目

  If Trim(ListItem) <;>; "" Then

  'Trim()作用是清除ListItem字符串内的空格

  List1.AddItem ListItem

  End If

  End Sub

  Private Sub List1ClearCmd_Click()

  '清空列表

  List1.Clear

  End Sub

  Private Sub List1MoveCmd_Click()

  Dim i As In观他故teger

  '判断列表框是否只有一个项目被选中

  If List1.SelCount = 1 Then

  List1.RemoveItem List1.ListIndex

  ElseIf List1.ListCount >; 1 Then

  '删除列表框中的所选中的多个项目

  For i = List1.ListCount - 1 To 0 Step -1

  'ListCount返回列表框中的项目总数

  'ListCount-1是列表框中最后一个项目的索引号

  '判断该项目是否被选中,Selected()返回布尔值

  If List1.Selected(i) Then

  '删除索引号为i的项目

  '偶尔会出现不正常清除选择的情况

  List1.RemoveItem i

  End If

  Next

  End If

  End Sub

  Private Sub List2AddCmd_Click()

  '定义变量,以接收输入的字符串

  Dim ListItem As String

  ListItem = InputBox("在列表中输入新项目")

  If Trim(ListItem) <;>; "" Then

  '将字符串增加到列表中

  List2.AddItem ListItem

  End If

  End Sub

  Private Sub List2ClearCmd_Click()

  '清空列表

  List2.Clear

  End Sub

  Private Sub List2MoveCmd_Click()

  Dim i As Integer

  '判断所选 元素是否只有一个

  If List2.SelCount = 1 Then

  List2.RemoveItem List2.ListIndex

  '如果所选 元素大于1,则按下列操作进行

  ElseIf List2.ListCount >; 1 Then

  For i = List2.ListCount - 1 To 0 Step -1

  If List2.Selected(i) Then

  List2.RemoveItem i

  End If

  Next i

  End If

  End Sub

  Private Sub RighttoLeftCmd_Click()

  Dim i As Integer

  '判断选中的元素有几个

  If List2.SelCount = 1 Then

  List1.AddItem List2.Text

  List2.RemoveItem List2.ListIndex

  '当选中的元素大于一个时

  ElseIf List2.SelCount >; 1 Then

  For i = List2.ListCount - 1 To 0 Step -1

  '如果该元素被选中,则将其从右边移至左边

  If List2.Selected(i) Then

  List1.AddItem List2.List(i)

  List2.RemoveItem i

  End If

  Next i

  End If

  End Sub

  这个例子包含一个窗体,窗体中有两个列表框(List1、List2)和八个按钮,界面如下:

  (图)窗体(FormListBox)

  我们首先新建一个标准的EXE工程,添加一个窗体,并把列表框和按钮控件添加到窗体上。各按钮控件的名称如下表:

  按钮名称 名称属性 按钮名称 名称属性

  删除所选项目(左) List1movecmd 删除所选项目(右) List2movecmd

  增加新项目(左) List1addcmd 增加新项目(右) List2addcmd

  清除弄表(左) List1clearcmd 清除列表(右) List2clearcmd

  右箭头 lefttorightcmd 左箭头 Righttoleftcmd

  ' List1列表框 Sorted属性设为"False" ' List2列表框 Sorted属性设为"True" ' MultiSelect属性设置为2 ' 即List2控件中的项目总是排序的

  在属性窗口中,将List1列表框 Sorted属性设为"False";List2列表框 Sorted属性设为"True",MultiSelect属性设置为2,即List2控件中的项目总是排序的。

  下一步我们为各控件添加相应的程序。

  其中:

  List1.AddItem "China" 是将"China"添加到列表框中。

  List1.ListIndex 返回的是列表框List1中当前选择项目的索引号码。

  List1.ListCount 返回的是列表框List1中项目总数。

  List1.ListCount - 1 返回列表框List1中最后一个项目的索引号。

  List1.Selected() 返回的是一个项目的选择状态,返回的是布尔值。

  代码写好之后,我们就可以保存工程,然后按"Ctrl+F5"键,测试检验一下我们的程序了。在这个小程序中,包含了列表框中的一般常用属性和方法。

控件

  V没入对维较isual Basic 提供了列表框控件(ListBox)以供用户进行叫次迫攻玉雷多个项目的选择。在工具箱面板上,列表框控件的图标如图一所示:

  图一

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

  一、列表框控件的主要属性:

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

  图二

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

  1、List(列表)属性:

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

  图三

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

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

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

  其张练升切知念货突北谓刘中,A 是一个变量;$ 指明了这个变量的类型:字符串型;这威材肉行句话的意思是:将 Lst1 列表框中第三项(List(2))取出来然后赋值给字符串变量 A 。

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

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

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

  LblSho调叶w.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 。

  2、清除所有:Clear

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

  列表框名称.Clear

  3、删除选项:RemoveItem

  此方法可以删除列表框中指定的项目,代码如下:

  列表框名称.RemoveItem 索引值

  其中,索引值是必须的,表示欲删除哪一个项目。

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

  LstName.RemoveItem 2

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

  列表框名称.RemoveItem 列表框名称.ListIndex

  比如:LstName.RemoveItem LstName.ListIndex

  列表框控件在工具箱上的基础控件。很多第三方控件也对列表框做出了扩充,提供了更多地功能,以满足不同的需求。只要将dll添加到工具箱就可以使用。

标签:
声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:yongganaa@126.com

评论留言

我要留言

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:yongganaa@126.com