VB之VB 神童教程第二章第九节——综合示例三
时间:2004-12-15 7:21:45 繁體中文 QQ群:45766462、28630214前面我们学了列表框控件(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教程第一章:我的第一个 VB 程序——“跟我来学 VB 神童教程”
编程中国-VB教程 第二章:控件学习
编程中国-VB 神童教程第二章第三节——综合示例一
编程中国-VB 神童教程第二章第四节——CommandButton 控件
编程中国-VB 神童教程第二章第五节——单选与复选控件
编程中国-VB 神童教程第二章第六节——综合示例二
编程中国-VB 神童教程第二章第七节——列表框控件
编程中国-VB 神童教程第二章第八节——组合框控件
编程中国-VB 神童教程第二章第十节——综合示例四
编程中国-VB 神童教程第二章第十一节——滚动条
更多内容请看 编程语言教程 > > vb教程基础专题
| · | 程序人生 一些编程初学者的良言警句 | 03-19 |
| · | 关于网络编程的,cmsghdr的意思? | 01-31 |
| · | VB实现逻辑盘隐藏分区 | 01-30 |
| · | 用vbs来写sql注入等80端口的攻击脚本 | 01-30 |
| · | 代码自我清除,自我加密,解密的实现 | 01-29 |
| · | 谈谈VB程序的破解(5千字) | 01-29 |
| · | Java编程基础 | 09-29 |
| · | JAVA教程 第一讲 Java语言概述 | 09-29 |
| · | JAVA教程 第二讲 Java语言基础知识 | 09-29 |
| · | JAVA教程 第三讲 Java语言中的面向对象特性 | 09-29 |
| · | JAVA教程 第四讲 Java的例外处理和I/O流 | 10-02 |
| · | JAVA教程 第五讲 AWT图形用户界面设计 | 10-02 |
| · | JAVA教程 第六讲 Java的线程和Java Applet | 10-02 |
| · | JAVA教程 第七讲 Swing用户界面设计 | 10-02 |
| · | JAVA教程 第八讲 Java网络编程 | 10-12 |
| · | Java新手入门的30个基本概念 | 11-16 |