中易网

VB高手进来

答案:3  悬赏:70  
解决时间 2021-04-28 08:30
  • 提问者网友:若相守£卟离
  • 2021-04-27 19:04

来看下这段代码

Private Sub CmdRight_Click()
 Dim X As Integer
 While LstLeft.SelCount > 0
  For X = 0 to LstLeft.LstCount - 1
   If LstLeft.Selected(X) = True Then
    LstRight.AddItem LstLeft.List(X)
    LstLeft.RemoveItem X
    Exit For
   End If
  Next X
 Wend
End Sub

其中listleft和listright是两个带复选框的list控件

我郁闷发的是这是不是陷入死循环了啊,为什么每次启动运行就是程序无响应啊

最佳答案
  • 二级知识专家网友:不服输的倔强
  • 2021-04-27 20:18

这段代码除了ListCount写成了LstCount外,没发现有什么问题,运行也正常。



Private Sub CmdRight_Click()
Dim X As Integer
While LstLeft.SelCount > 0
For X = 0 To LstLeft.ListCount - 1 'ListCount写错
If LstLeft.Selected(X) = True Then
LstRight.AddItem LstLeft.List(X)
LstLeft.RemoveItem X
Exit For
End If
Next X
Wend
End Sub



这段代码的功能其实只用一个循环就可以实现。



Private Sub CmdRight_Click()
Dim X As Integer
While LstLeft.SelCount > 0 And X < LstLeft.ListCount
If LstLeft.Selected(X) Then
LstRight.AddItem LstLeft.List(X)
LstLeft.RemoveItem X
Else
X = X + 1
End If
Wend
End Sub

全部回答
  • 1楼网友:高冷不撩人
  • 2021-04-27 21:28

废话 ! 这当然四循环! 你套了两个循环! 一个是while ! 一个是 for ! 而且一个条件还不对! 不死循环 才怪!

  • 2楼网友:劳资的心禁止访问
  • 2021-04-27 20:35

其中listleft和listright是两个带复选框的list控件 你代码里面是LstLeft LstRight

并且不需要使用While ... Wend

不知道你要这样用

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息