Dim WithEvents pic As PictureBoxPrivate Sub Form_Click()
  Set pic = Me.Controls.Add("VB.PictureBox", "Pic1", Me)
  pic.Top = 200
  pic.Left = 200
  pic.Width = 4000
  pic.Height = 5000
  pic.Visible = True
End SubPrivate Sub Pic_DblClick()
  MsgBox "双击动态创建的控件"
End Sub

解决方案 »

  1.   

    你动态添加控件数组!然后在他们的事件代码中一样做代码!具体判断是哪个控件数组触发的事件你可以判断他们的:index啊!
      ‖天天写程序‖    ‖夜夜泡小妞‖
    ‖身兼数职做代码‖‖晚晚工作到天明‖
    ‖为何人生如此苦‖‖泡妞消费数目高‖
    ‖我看世俗本无趣‖‖程序伤神妞伤人‖
      ‖不再见女人‖    ‖不想写程序‖
      

  2.   

    那么用controls.add方法怎么动态添加数组啊?
      

  3.   

    '添加一个按钮Command1,将它的Index属性设为0
    '然后用Load动态添加其他按钮Private Sub Command1_Click(Index As Integer)
      MsgBox "你单击了按钮" & CStr(Index + 1)
    End SubPrivate Sub Form_Load()
      Dim i As Integer
      Command1(0).Caption = "按钮1"
      For i = 1 To 5
        Load Command1(i)
        Command1(i).Visible = True
        Command1(i).Caption = "按钮" & CStr(i + 1)
        Command1(i).Left = Command1(0).Left
        Command1(i).Top = Command1(i - 1).Top + Command1(0).Height
      Next
    End Sub
      

  4.   

    可是我不想实现添加一个按钮而是直接用controls.Add这种方法来添加不行吗?
      

  5.   

    可是我不想实现添加一个按钮而是直接用controls.Add这种方法来添加不行吗?
      

  6.   

    如果你想动态生成的控件数组能响应事件,就不能用你说的这种方法。MSDN里
    有这样的说法:使用 WithEvents,可以声明任意个所需的单变量,但不能使用 WithEvents 创建数组Dim 语句声明变量并分配存储空间。语法Dim [WithEvents] varname[([subscripts])] [As [New] type] [, [WithEvents] varname[([subscripts])] [As [New] type]] . . .Dim 语句的语法包含下面部分:部分 描述 
    WithEvents 可选的。关键字,说明 varname 是一个用来响应由 ActiveX 对象触发的事件的对象变量。只有在类模块中才是合法的。使用 WithEvents,可以声明任意个所需的单变量,但不能使用 WithEvents 创建数组。New 和 WithEvents 不能一起使用。 
    varname 必需的。变量的名称;遵循标准的变量命名约定。 
    subscripts 可选的。数组变量的维数;最多可以定义 60 维的多维数组。subscripts 参数使用下面的语法: 
      [lower To] upper [, [lower To] upper] . . . 
      如果不显式指定 lower,则数组的下界由 Option Base 语句控制。如果没有使用 Option Base 语句,则下界为 0。 
    New 可选的。可隐式地创建对象的关键字。如果使用 New 来声明对象变量,则在第一次引用该变量时将新建该对象的实例,因此不必使用 Set 语句来给该对象引用赋值。New 关键字不能声明任何内部数据类型的变量,以及从属对象的实例,也不能与 WithEvents 一起使用。 
    type 可选的。变量的数据类型;可以是 Byte、布尔、Integer、Long、Currency、Single、Double、Decimal(目前尚不支持)、Date、String(对变长的字符串)、String * length (对定长的字符串)、Object、Variant、用户定义类型、或对象类型。所声明的每个变量都要一个单独的 As type 子句。 
    说明在模块级别中用 Dim 声明的变量,对该模块中的所有过程都是可用的。在过程级别中声明的变量,只在过程内是可用的。可以使用 Dim 语句在模块级或过程级中声明变量的数据类型。例如,下面的语句声明了 Integer 类型的变量。Dim NumberOfEmployees As Integer也可以使用 Dim 语句来声明变量的对象类型。下面的语句为工作表的新建实例声明了一个变量。Dim X As New Worksheet如果定义对象变量时没有使用 New 关键字,则在使用该变量之前,必须使用 Set 语句将该引用对象的变量赋值为一个已有对象。在该变量被赋值之前,所声明的对象变量有一个特定值 Nothing,这个值表示该变量没有指向任一个对象实例。也可以使用带空圆括号的 Dim 语句来定义动态数组。在定义动态数组后,可以在过程内使用 ReDim 语句来定义该数组的维数和元素。如果试图在 Private,Public 或 Dim 语句中重新定义一个已显式定义了大小的数组的维数时,就会发生错误。如果不指定数据类型或对象类型,且在模块中没有 Deftype 语句,则该变量按缺省设置是 Variant 类型。当初始化变量时,数值变量被初始化为 0,变长的字符串被初始化为一个零长度的字符串 (""),而定长的字符串则用 0 填充。Variant 变量被初始化为 Empty。用户自定义类型的变量的每个元素作为各自独立的变量进行初始化。注意 当在过程中使用 Dim 语句时,通常将 Dim 语句放在过程的开始处。