在一个窗体的通用过程之中定义了如下的函数
Sub cp()
Static n As Integer
ReDim p(5)
p(n) = "ppp" & n
Set a = Controls.Add("vb.picturebox", p(n))
Set p(n) = a
p(n).Visible = True
p(n).Top = (n + 1) * 200
n = n + 1
End Sub
在该窗体的一个按钮控件的click事件之中调用这个过程,连续创建3个图形控件,可以正常工作的
Private Sub Command1_Click()
Call cp
End Sub
现在想在按钮2单击时把第一个创建的图形控件的可见属性改成不可见的,但是会报错的。奇怪呀
Private Sub Command2_Click()
p(0).Visible = False
End Sub
我已经在通用模块之中定义了Global p()的。应该不会有局部变量的问题吧。
希望能帮帮我,谢谢大家。

解决方案 »

  1.   

    对了,我还没有写全。如果你点击一下command1再点击一下command2时是正常的。但是如果已经点击了多下command1即已经创建了多个图形控件之后再点击comand2的时候就会报错的。我对这个很不理解。
      

  2.   

    哦,我知道了。是ReDim语句的问题。去掉Redim语句,在通用模块中定义好。
      

  3.   

    eports(飘零风),谢谢你。去掉redim语句之后是可以正常工作了,但是我的程序在工作是的p()数组元素的个数是在运行是输入的。比如有一个text控件,由他的输入值定义要创建的p()元素的个数。这样的话不能在通用过程之中定义:global p(text1.text)呀。也不能定义
    y=text1.text
    global p(y)
    的,都会报错的。急死我了。。
      

  4.   

    哦,这个问题我相信绝大多数人都碰到过。我的解决办法是定义一个足够大的数组。另一种方法是自定义一个结构。但是我不知道VB中如何使用指针,似乎要用AddressOF,不过我一直没有研究过。