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 即复选类型,你会发现本节所编写的程序又有很多问题了,该如何解决呢?下一节见!