VB两个窗口间传递数据望解答

我在VB中新建了两个FormForm1代码如下:PublicaAsInteger'把a定义在通用区PrivateSubForm_Load()a=5EndSubForm2代... 我在VB中新建了两个Form
Form1代码如下:
Public a As Integer '把a定义在通用区
Private Sub Form_Load()
a = 5
End Sub

Form2代码如下(只添加了一个按钮):
Private Sub Command1_Click()
MsgBox Form1.a '通过Form.变量访问
End Sub

将Form2设置为主窗口
运行后发现弹出的消息窗口时0,不是5
通过调价模块将Public a As Integer '把a定义在通用区剪切到模块里定义成全局变量,通过
MsgBox a ,发现得到的也是0,而不是5,真不知道是哪里的问题,望大家解答
展开
 我来答
涐吢铱舊囿儚
2014-01-18 · TA获得超过488个赞
知道小有建树答主
回答量:512
采纳率:100%
帮助的人:583万
展开全部
这个很简单。有两个方法解决:
① 在 Msgbox 之前加两句代码就行了:
Load Form1
UnLoad Form1
'如果在此处不Unload ,你在别的地方就要进行Unload才行。
然后再 MsgBox ……
② 直接把 a = 5 写在 Form1的 Form_Initialize() 事件中。
  这个方法最简便。
网海1书生
科技发烧友

2014-01-18 · 擅长软件设计、WEB应用开发、小程序
网海1书生
采纳数:12311 获赞数:26228

向TA提问 私信TA
展开全部

Form_Load事件只有在相应窗体被调入内存(即Load)后才会触发的,你的Form2是主窗口,而Form1始终没有Load,所以Form1的Form_Load事件是不会运行的,因此Form1.a的值就始终是0不是5喽。改成这样即可:

Private Sub Command1_Click()
Load Form1
MsgBox Form1.a  '通过Form.变量访问
End Sub
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ZHMINGEN
2014-01-18 · TA获得超过1735个赞
知道大有可为答主
回答量:3149
采纳率:68%
帮助的人:1250万
展开全部
肯定是0,因为你是在Form1赋值,而将Form2设置为主窗口,这时,变量a没有赋值,当然=0了。
不论是程序级变量、模块级变量、过程级变量必须首先赋值才能使用的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sysplay
2014-01-18 · TA获得超过1155个赞
知道小有建树答主
回答量:663
采纳率:86%
帮助的人:538万
展开全部
目测问题原因为:
a=5是在Form1的Form_Load()事件中执行的。megbox a时,这个事件应该没有执行过吧!
追问
那该怎么做才行呢? LOAD不是一开始就执行吗?
追答

Form2的Form_Load()的事件一开始就执行,Form1的Form_Load()事件没有执行过。


你可以在From2的Form_Load()的事件中修改Form1.a。

From2的代码如下:

Private Sub Command1_Click()
    MsgBox Form1.a
End Sub
Private Sub Form_Load()
    Form1.a = 5
End Sub
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式