窗体如图1所示。要求程序运行时,在文本框Text1中输入一个姓氏,单击“删除”按钮(名称为Commandl),则可删除列表框Listl中所有该姓氏的项目。若编写以下程序来实现此功能: Private Sub Commandl_Click() Dim

admin2018-07-11  40

问题 窗体如图1所示。要求程序运行时,在文本框Text1中输入一个姓氏,单击“删除”按钮(名称为Commandl),则可删除列表框Listl中所有该姓氏的项目。若编写以下程序来实现此功能:

Private Sub Commandl_Click()
  Dim n%.k%
  n=Len(Text1.Text)
  For k=0 To List 1.ListCount-1
    If Left(Listl.List(k),n)=Text1.Text Then
    List 1.RemoveItem k
    End If
  Nextk
End Sub
在调试时发现,如输入“陈”,可以正确删除所有姓“陈”的项目,但输入“刘”,则只删除了“刘邦”、“刘备”2项,结果如图2所示。这说明程序不能适应所有情况,需要修改。正确的修改方案是把For k=0To List1.ListCount一1改为(    )。

选项 A、For k=1 To Listl.ListCount-1
B、For k=1 To List1.ListCount
C、For k=0 To Llst 1.L1stCount
D、For k=List1.ListCount-1 To 0 Step一1

答案D

解析 在程序运行时删除列表框中的项目可以使用Removeltem方法,其语法为:
列表框.RemoveItem索引号,列表框的属性Listlndex返回当前所选项目的索引号,因此删除列表框选中项目的语句为:Listl.ReraoveltemList1.Listlndex。
列表框的IAst(Index)属性返回指定索引号的列表项内容,第一个列表项的索引为0而最后一个项目的索引为IAstCount-1,其中,IAstCount属性返回列表框中当前的列表项总数。
本题原代码错误原因:每执行一次Removeltem方法后,列表框中被删除项目的后续项目的位置将前移,即其IAsflndex属性值将减1。
为此可从列表框的最后一个项目开始进行查找,即:For k=Listl.ListCount-1 To 0 Step一1。
转载请注明原文地址:https://kaotiyun.com/show/Q7Gp777K
0

最新回复(0)