急求!VB6里实现多窗体的“上一步”和数值的传递
把我遇到的问题,简化成这样一个模型。
程序是这样:
建立FORM1和FORM2,并各建立一个COMMANDBUTTON和TEXTBOX
程序:
在标准模块中:
Public a As Integer '定义全局变量1
Sub main() '初始化a=1,并且首先调用FORM1
a = 1
Form1.Show
End Sub
FORM1中:
Public Sub Command1_Click()
a = a + 1
Form1.Hide
Form2.Show
End Sub
Public Sub Form_Load()
Text1.Text = a
End Sub
FORM2中:
Public Sub Command1_Click()
a = a
Form2.Hide
Form1.Show
End Sub
Public Sub Form_Load()
Text1.Text = a
End Sub
要实现FORM1里点COMMAND1,A自加1,显示在FORM2里,并且隐藏自己,显示FORM2,再点击FORM2的COMMAND1,A再自加1,显示在FORM1,并也隐藏FORM2,显示FORM1,以此往复。结果如下:
程序运行开始,进入了FORM1,并且TEXT1里也显示“1”,正常
然后单击COMMAND1,进入了FORM2,并在FORM2的TEXT1里显示了“2”,也正常
接下来问题出了,再点FORM2的COMMAND1,进入了FORM1,可TEXT1里显示的却是“1”,错哪了呀。。。。请大家帮忙改正下。。。。………………%>_<%
[解决办法]
因为你的 Text1 是在 Form_Load() 中初始化的。
[解决办法]
Form1.Hide 改为 Unload Form1
Form2.Hide 改为 Unload Form2
否则再次显示窗体不触发 Form_Load() 事件。
[解决办法]
form1.hide并不是卸载form1,仅仅是隐藏.
所以下次再次form1.show的时候,并不执行form_load过程
如果unload就不一样了,下面的程序能达到你说的效果.
'标注模块:Public a As Integer
'form1:包括text1和command1
Private Sub Command1_Click()
Dim x As New Form2
a = a + 1
x.Show
Unload Me
End Sub
Private Sub Form_Load()
Text1.Text = a
End Sub
'form2 包括text1和command1
Private Sub Command1_Click()
Dim x As New Form1
a = a + 1
x.Show
Unload Me
End Sub
Private Sub Form_Load()
Text1.Text = a
End Sub
[解决办法]
两个show的地方都unload一下
Unload Form1
Form1.Show