给你一点提示事例
      dim ctl() as textbox      redim ctl(100)'假设为100
If start Then'start为需要建立的标志
            Set ctl(j) = Me.Controls.Add("VB.TEXTBOX", "txt" & j, Me)
            With ctl(j)
            .Move x, y, flxcol(j).Width, 270
            .Enabled = flxcol(j).NeedCnt
            .BorderStyle = IIf(flxcol(j).NeedCnt, 1, 0)
            .Visible = True
            End With
        End If
循环套一下就可以了,如果是BUTTON,只要将TEXTBOX 修改为BUTTON就可以了!

解决方案 »

  1.   

    TO sindia:问题的关键不在于显示,而是我要对这些生成的控件编程,不能写100个buttonclick事件吧
    To zfcheng:那你怎么办?
      

  2.   

    Sample:New project
    Dim WithEvents cmdMyTest As CommandButton
    Private Sub Form_Load()
    Set cmdMyTest = Controls.Add("VB.CommandButton", "cmdMyTest")
    cmdMyTest.Visible = True
    cmdMyTest.Caption = "Test"
    cmdMyTest.Height = 500
    cmdMyTest.Width = 800
    End Sub
    Sub cmdmytest_click()
    MsgBox "Welcome!"
    End Sub
      

  3.   

    to bao_zey:一个控件没问题,可我的是不定数量的一组,事件没法写
      

  4.   

    以动态生成command为例,你可以先创建一个comand1,然后把它的index值设为0,然后用循环语句load comand1(i),接着,你可以对应这一组控键的index值不同编程!
    For i = 1 To 8
        If i Mod 3 = 0 Then
           Load Cmd2(i)
           Cmd2(i).Left = Cmd2(i - 3).Left   '确定动态生成的控键的位置
           Cmd2(i).Top = Cmd2(i - 3).Top - (Cmd2(i - 3).Height + 50)
           Cmd2(i).Visible = True
        End If
    Next i
      

  5.   

    好象可以,能跟我讲讲和用withevents定义,add添加的区别吗,主要是概念上的?
      

  6.   

    实际上,我也不是很清楚:
    使用 WithEvents,可以声明任意个所需的单变量,但不能使用 WithEvents 创建数组。
    add是在 Controls 集合中添加一个控件并返回一个对该控件的引用。
    凭我的拙见,用WithEvents和add不能创建多个控键!
      

  7.   

    建议用控件数组,若用控件数组,我建议不要用按钮的CLick事件,因为那样无法捕捉是哪个按钮被按下,以我的观点,用按钮的MouseDown事件,它可以判断哪个按钮被按下,然后你可以按照自己的要求去调用相应的函数。由于我对你的想法还不十分明白,若觉得此法不能解决你的问题,你可以将自己的想法说得更明白,包括你认为行不为通的想法。
      

  8.   

    很对,用WithEvents和add不能创建多个同名控键(控件组),只是不清楚为什么,你的方法行,也不清楚为什么,算了,已经给我莫大帮助了,给分!(有问题还请赐教)