我想在把一个窗体中的值传到另一个窗体中,请问该如何定义变量才正确呢!?

解决方案 »

  1.   

    有好几种方法:
    1、将要传递的值定义为全局变量放于模块中,在窗体运行过程中改变其值2、如传递的是窗体控件的值,可采用将需传值的窗体Hide,用Form1.txtName.Text的方法得到值3、用窗体属性的方法传递:
    Private mbFlag          As Boolean
    Public Property Get Flag() As Boolean
        Flag = mbFlag
    End Property
      

  2.   

    如果两个窗口都开着,或者一个窗后用了hide,只要写全控件的名字就可以了。
    如果关闭了一个窗口,只要在关闭前,把值全部保存出来
      

  3.   

    前面的方法我试过了!
     我在模块中定义了一个变量:Public Savetype as String
      在第一个窗体中使用 Savetype 保留一个字符“A” 然后在第二个窗体中使用Label1显示Savetype, 但是没有成功,这是怎么回事呢?
      

  4.   

    支持阿九的说法
    还有一种方法,用窗体内定义的公用变量。
    窗体一的代码:
    Public Msg As String      ‘传递值所使用的变量
    Private Sub Command1_Click()
        Msg = "有钱大伙一块赚!——VBDN"
        Unload Me
        Form2.Show
    End Sub
    窗体二的代码:
    Private Sub Form_Load()
        MsgBox Form1.Msg
    End Sub
    看到了么?“Unload Me”并没有影响值的传递!
      

  5.   

    补充:
        form2是由Form1调用的,所以“Unload Me”并没有影响值的传递。如果是由其他窗体调用,就不能“Unload”,只能“Hide”了!另外,用变量传递的方法和阿九的“Form1.txtName.Text”方法是一个方法!
      

  6.   

    请问在第一个窗体中使用 Savetype 保留字符“A”后第二个窗体的显示刷新了么?窗体二取传递值的代码放在窗体的Paint事件中,
    Private Sub Form_Paint()
        Label1.Caption = Savetype
    End Sub
    窗体一改变传递值之后刷新窗体二
    Private Sub Command1_Click()
        Savetype = Time
        Form2.Refresh
    End Sub
      

  7.   

    1、将要传递的值定义为全局变量放于模块中,在窗体运行过程中改变其值2、如传递的是窗体控件的值,可采用将需传值的窗体Hide,用Form1.txtName.Text的方法得到值3、用窗体属性的方法传递:
    Private mbFlag          As Boolean
    Public Property Get Flag() As Boolean
        Flag = mbFlag
    End Property