为何show窗体前,给这个窗体的全局变量赋值,但是这个窗体的load事件中取不到这个变量的值?
--------------------------------------------
假如窗体 form2,有一个全局变量 var2,有一个文本框 text1我如果这样调用这个窗体
form2.text1.text="my text"
form2.var2="my string"
form2.show 此时在 form2的load事件中,是取不到变量var2的值的。
如果将 form2.text1.text="my text" 这一句去除,则可以取到变量var2的值了
这是为什么呢?为何在 form2.show 之前为这个窗体的控件赋值,则这个窗体的 load 事件就取不到这个变量的值呢?
大家可以亲自试一下。

解决方案 »

  1.   

    form2.text1.text="my text" 这句执行完,form_load已经执行了
      

  2.   

    调用这个窗体的任何对象,该窗体都会先load
      

  3.   

    form2.text1.text="my text"'会自动因text1加载form2
    form2.var2="my string"这两句换下位置即可
      

  4.   

    调用这个窗体的任何对象,该窗体都会先load
      

  5.   

    form2.var2="my string"改为var2="my string"
    并在最上面通用区  Dim Var2 As String
      

  6.   

    Dim var2$
    Private Sub Form_Load()
       Form2.Text1.Text = "my text"
       var2 = "my string"
       Form2.Show
       MsgBox var2
    End Sub
      

  7.   

    你没明白我的意思,
    我想通过 form2的全局变量 var2,给form2传值。
      

  8.   


    你一直只在 Form2里面 在通用区Dim宣告 已经等于是Form2本窗体内的 "全局变量" 如果是要给外部使用 Dim 当然不行
      

  9.   

    请参考msdn中对窗体的生存周期的说明。
      

  10.   

    你还是没明白,
    假如两个窗体,form1,form2
    在form2中定义全局变量 var2 ,并且form2中有一个文本框text1,
    然后
    我在 form1中,调用 form2,
    注,以下代码在 form1中
    form2.text1.text="mystring....."
    form2.var2="asdfasdf"
    form2.show
      

  11.   

    另外,在窗体中不用全局变量,用属性也是一样的效果。
    property let 
    property get 
      

  12.   

    呵呵....如果你前面提到 Form1 我就不会说那些废话了
      

  13.   

    呵呵....如果你前面提到 Form1 我就不会说那些废话了
    ----------------------------------
    那也谢谢你,热心。
      

  14.   

    改成:form2.var2="my string"
    form2.text1.text="my text"
    form2.show  应该就没问题了 
    如果只是给窗体的全局变量赋值是不会触发窗体的Load事件,但是调用窗体里的控件就会触发Load事件Form1Private Sub Command1_Click()
        Form2.a1 = 1
        Form2.a2 = 2
        Form2.a3 = 3
        Form2.Show
    End SubForm2Public a1 As Integer
    Public a2 As Integer
    Public a3 As IntegerPrivate Sub Form_Load()
        Debug.Print a1
        Debug.Print a2
        Debug.Print a3
    End Sub
      

  15.   

    先去弄明白调用其它窗体上的控件属性与加载此窗体的关系。Private Sub Form_Load()
    Form2.var2 = "my string"
    Form2.Text1.Text = "my text"Form2.Show
       
    End Sub
      

  16.   


    'Form2代码
    Public m_var2 as string
    'Form1代码
    dim newfrm as new Form2newfrm.m_var2 = "."
    newfrm.TextBox1.text = ".."set newfrm = nothing尽量不要用全局实例名称Form2来实例化显示Form2窗口,一旦全局实例Form2未得到Unload,那么下一次Load事件就不会触发,一些属性根本就不会重新初始化。
      

  17.   

    只要操作了窗体的数据,都会调用load事件form2.text1.text="my text"'调用这一句话的时候,load事件已经启动了
    form2.var2="my string"
    form2.show  ’此时,已经不再调用load了
    解决办法
    如三楼说的,换一下位置也行
    或者不在load中取数据,换成Form_Activate事件