已知:
form1 中:
Private Sub cmdStock_Click()
On Error GoTo aaaa
    Dim Item As ListItem
    Set Item = List1.SelectedItem
    With frmToStock
        .txtNum.Text = 100
        .Show
    End With
aaaa:
End Sub
当我在form2的Form_Load()中这样来输出txtNum.Text的值时,老是为空,为什么呢:
Private Sub Form_Load()
MsgBox (txtNum.Text)
end sub

解决方案 »

  1.   

    你怎么问个问题都没办法阐述清楚上面是form1,form2
    代码中确又是什么frmToStock,还写了一堆没用的代码你要报出来,你就用个全局变量去传递不就行了。搞那么麻烦
      

  2.   

    我把问题简化吧
    在form1的listview的单击事件将中Item.SubItems(6)传递到FORM2中的MerchID:
    Private Sub List1_DblClick()
        With frmToStock
            .MerchID.Text = Item.SubItems(6)
            .Show
        End With
    End Sub
    现在当我在form2的Form_Load()中这样来调用时,老是为空,为什么呢:
    Private Sub Form_Load()
    MsgBox (MerchID.Text)
    end sub
      

  3.   


    上面是form1,form2
    代码中确又是什么frmToStock,=====看来你还是读不懂得我这句话啊兄弟form2在你眼中就=frmtostock???omg
      

  4.   

    '改为Form_Activate
    Private Sub Form_Activate()
    MsgBox (MerchID.Text)
    end sub
      

  5.   

    你的|Form2應該就是frmToStock
    Private Sub List1_DblClick()
        With frmToStock
            .MerchID.Text = Item.SubItems(6)'你在這設信斷點,有沒有賦值成功
             .Load    '先Load
            .Show 1
        End With
    End SubPrivate Sub Form_Load()
    MsgBox (MerchID.Text)
    end sub
      

  6.   

    daisy8675(莫依 俞小灏的姐姐团) 
    form2就是frmtostock 我写错了,晕哦
      

  7.   

    gxqianqin(會飛) 在frmToStock中(FORM2)MerchID.Text是有值的,但是在FORM_load中调用不出来,
      

  8.   

    bas中public a as stringPrivate Sub List1_DblClick()        a = Item.SubItems(6)
    End SubPrivate Sub Form_Load()
    MerchID.Text=a
    msgbox a
    end sub
      

  9.   

    我现在在一个窗体中测试也是一样哦Public str As String  Private Sub Form_Activate()
    str = MerchID.Text
    End Sub然后在FORM
    Private Sub Form_Load()
     MsgBox (str)
    End Sub结果出来的还是空的
      

  10.   

    用个全局变量都不知道load 本身就是将form重新调用一次相当与重会。怎么可能还有数据=_=无语言,基础都不打好
      

  11.   

    模块
    Public a As Stringform1Private Sub Command1_Click()
      a = "123"
      Form2.Show
    End Subform2
    Private Sub Form_Load()
      Text1.Text = a
      MsgBox Text1.Text
    End Sub如果你再看不懂,偶就完全没话讲的说。。
      

  12.   

    daisy8675(莫依 俞小灏的姐姐团)
    按你的方法第一次点击List1一样没有输出,点第二次才有的,不信你测试^_^public a as stringPrivate Sub List1_DblClick()        a = Item.SubItems(6)
    End SubPrivate Sub Form_Load()
    MerchID.Text=a
    msgbox a
    end sub
      

  13.   

    daisy8675(莫依 俞小灏的姐姐团) 
    不要这么说好不好^_^
    今天见鬼了啊,这样搞居然可以,
    Private Sub List1_DblClick()
       
    On Error GoTo aaaa
        Dim Item As ListItem
        Set Item = List1.SelectedItem
        a= Item.SubItems(6)
        
        With frmToStock
            .Label11.caption = Item.SubItems(1)
            .MerchID.Text = Item.SubItems(6)
            .lbName.Tag = Item.Text
            .txtNum.Text = 100
            .txtDate.Text = Date
            .Show
        End With
    aaaa:
     
    End Sub这样搞可以,
    Private Sub List1_DblClick()
       
    On Error GoTo aaaa
        Dim Item As ListItem
        Set Item = List1.SelectedItem
        
        
        With frmToStock
            .Label11.caption = Item.SubItems(1)
            .MerchID.Text = Item.SubItems(6)
            .lbName.Tag = Item.Text
            .txtNum.Text = 100
            .txtDate.Text = Date
            .Show
        End Witha= Item.SubItems(6) '公共变量移到这里就不行了,我晕啊
    aaaa:
     
    End Sub
      

  14.   

    Private Sub List1_DblClick()
      On Error GoTo aaaa
        Dim Item As ListItem
        Set Item = List1.SelectedItem
        a= Item.SubItems(6) '公共变量放到这里完全可以在FORM2中调用    
        With frmToStock
            .Label11.caption = Item.SubItems(1)
            .MerchID.Text = Item.SubItems(6)
            .lbName.Tag = Item.Text
            .txtNum.Text = 100
            .txtDate.Text = Date
            .Show
        End With'a= Item.SubItems(6) '公共变量放到这就出鬼了,必须在FORM1中点第二次值才在FORM2中传出来
    aaaa:
     
    End Sub
      

  15.   

    莫mm不要着急其实呢,这个问题不奇怪的
    Private Sub cmdStock_Click()
    On Error GoTo aaaa
    Dim Item As ListItem
    Set Item = List1.SelectedItem
    With frmToStock
    .txtNum.Text = 100 ‘你在这里放个断点就知道了,你在给form2里面的控件赋值得时候,
    具体过程其实是你先调用了form2_load然后才给txtnum.text=100
    已经启动了form2_load事件了。所以你在form2_load里面的msgbox显示的情况没有txtnum.text不是100。但这并不影响你form2显示的情况。你把那条msgbox去掉就好了
    .Show
    End With
    aaaa:
    End SubPrivate Sub Form_Load()
    MsgBox (str) ‘就不要在这里要这个值了
    End Sub
      

  16.   

    'FORM2
    private mStrNumber as stringpublic sub SettxtNum(byval strNumber as string )
      mStrNumber = strNumber 
    end subprivate sub form_load()
      msgbox mStrNumber
    end sub
    '-----------------------------------------------
    'FORM1
    private sub command1_click()
       form2.SettxtNum(txtnum.text)
    end sub
    '问题解决
      

  17.   

    'FORM2
    private mStrNumber as stringpublic sub SettxtNum(byval strNumber as string )
      mStrNumber = strNumber 
    end subprivate sub form_load()
      msgbox mStrNumber
    end sub
    '-----------------------------------------------
    'FORM1
    private sub command1_click()
       form2.SettxtNum(txtnum.text)
       form2.show   '刚才少写这一句
    end sub
    '问题解决
      

  18.   

    最简单的办法
    Private Sub Form_Load()
      MsgBox (frmToStock.txtNum.Text)
    end sub
      

  19.   

    哇哈哈哈哈哈哈哈哈Mmm貌似好冲动啊:)