VB中一个窗体A  show另一个窗体B,当B unload me 时,想把窗体中的某些变量的值传递给窗体A 
除了定义public 变量外,还有没有其它的好办法!

解决方案 »

  1.   

    使用WM_COPYDATA 向窗口传递数据
      

  2.   

    '在FormB:
    private m_strValue as string
    public sub FormShow(strValue as string)
         m_strValue = strValue 
         .
         .
         Me.show
         strValue = m_strValue
    end sub
    private sub CommondButton1_Click
         m_strValue = "newValue"
    end sub'在FormA:
    private sub CommandButton1_Click
    dim l_strValue as string
         call FormB.Formshow(l_strValue)
         msgbox l_strValue
    end sub
      

  3.   

    在project菜单在增加一个Module,在Module中定义一个变量,这个变量是一个全局变量,通过这个变量就可以在窗体间传递数据了。
      

  4.   

    使用属性:Form2中写:
    dim aa as string public property get Form2Data() as string
       Form2Data=aa
    end propertyForm1中调用:dim dd as stringdd=Form2.Form2Data
      

  5.   

    有窗口中定义私有变量,然后定义公共的访问函数如:
    dim a as stringpublic Function GetValue () as string
      GetValue = a
    end Function不推荐直接用公共的变量传递参数!!
      

  6.   

    用窗体属性可以实现,如:Public Property Get Flag() As Boolean'取得
        Flag = mFlag
    End Property
    Public Property Let Flag(vData as Boolean)'设置
        mFlag=vData
    End Property在B窗体Unload 时传递值 frmA.Flag=True,类似于这种写法
      

  7.   

    还有个方法,不unload me,而是使me.visible=false,这样变量就仍在内存中了。
      

  8.   

    有许多方法,我觉得最简单的就是,创建一个标准类,在类里声明一个变量,在A窗体中给这个变量赐值,B窗体里就可以直接访问里,不过最好在B窗体里也设一个私有变量,用类里面的赐给B窗体里的变量,再操作。这样不会影响这个公用变量!
      

  9.   

    在A里声明一个PUBLIC 事件
    如: 
    然后在B的UNLOAD 事件里调用