设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 4509|回复: 5
打印 上一主题 下一主题

列表框

[复制链接]
跳转到指定楼层
1#
发表于 2009-2-3 21:24:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
为了学习方便,提供的源码已经作了详细的中文注释,看看源码框中的代码:

  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列表框 Sorted属性设为“False”

  ' List2列表框 Sorted属性设为“True”

  ' MultiSelect属性设置为2

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

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

  Private Sub Form_Load()

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

  List1.AddItem “China”

  List1.AddItem “America”

  List1.AddItem “Japan”

  List2.AddItem “Soccer”

  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 Sub

  Private Sub List1AddCmd_Click()

  Dim ListItem As String

  '

  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 Integer

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

  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”键,测试检验一下我们的程序了。在这个小程序中,包含了列表框中的一般常用属性和方法。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-4-27 16:01 , Processed in 0.084492 second(s), 24 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表