假如有text1,text2...text100个text,我想做一个for循环,把所有text都拿一遍,应该怎么做,用text[i]好像不行。

解决方案 »

  1.   

    做成控件数组就可以了, Text1(0), Text1(1)...
      

  2.   

    控件数组不是这样定义的。
    你先将窗体上的TEXT都删掉,添加一个新的TEXT1,点住它按CTRL+C再按ctrl+v,就和平常拷贝粘贴一样,这时VB会提醒你是否要建控件数组,选是。按几下CTRL+V就会添加几个,你可以看到这些粘贴出来的TEXT控件的名字都是一样的,都叫TEXT1,区别只是它们的INDEX属性不同,这个INDEX就是你需要用的TEXT1(INDEX)了,不知道这样说,楼主是否明白了。
    当控件数组创建好之后,使用就非常方便了比如:要给每一个TEXT清空内容:
    dim I as long
    dim L as long 
    I = text1.count '获得TEXT控件数组的数量
    for L=0 to I-1  '因为下标是从0开始的,所以循环最终值是I-1
       text1(l).text="" '清空该控件的内容
    next
      

  3.   

    另外,看到楼主居然要用到100个TEXT,这样做虽然可以,但是排版也会是一个很麻烦的事,试想一下,当楼主的程序想改变一下窗体的大小,可能就需要对这100个TEXT重新排位置,很麻烦的哦。
    可是改成网格控件来做,比如:MSFLEXGRID等等,在VB的工具栏点右键,再点“部件”就可以选择并添加进去了。
      

  4.   

    例:Public Function ClearTextBox(frm As Form, Biaoshi As String)
    '用于清空窗体中的textbox控件
    'frm:     指定被清空的控件所在窗体
    'Biaoshi: 指定被清空的控件Name属性的第一位字符,若不指定(为空或空格),则默认为清空窗体中所有textbox的text属性
    '所有符合biaoshi的frm中的textbox控件text属性将全部被清空。
      Dim ctl As Control
      For Each ctl In frm
        If TypeOf ctl Is TextBox Then
          If Len(Trim(Biaoshi)) <> 0 Then
            If Mid(ctl.Name, 1, 1) = Biaoshi Then
              ctl.Text = ""
            End If
          Else
            ctl.Text = ""
          End If
        End If
      Next ctl
    End Function