为何show窗体前,给这个窗体的全局变量赋值,但是这个窗体的load事件中取不到这个变量的值?
--------------------------------------------
假如窗体 form2,有一个全局变量 var2,有一个文本框 text1我如果这样调用这个窗体
form2.text1.text="my text"
form2.var2="my string"
form2.show 此时在 form2的load事件中,是取不到变量var2的值的。
如果将 form2.text1.text="my text" 这一句去除,则可以取到变量var2的值了
这是为什么呢?为何在 form2.show 之前为这个窗体的控件赋值,则这个窗体的 load 事件就取不到这个变量的值呢?
大家可以亲自试一下。
--------------------------------------------
假如窗体 form2,有一个全局变量 var2,有一个文本框 text1我如果这样调用这个窗体
form2.text1.text="my text"
form2.var2="my string"
form2.show 此时在 form2的load事件中,是取不到变量var2的值的。
如果将 form2.text1.text="my text" 这一句去除,则可以取到变量var2的值了
这是为什么呢?为何在 form2.show 之前为这个窗体的控件赋值,则这个窗体的 load 事件就取不到这个变量的值呢?
大家可以亲自试一下。
form2.var2="my string"这两句换下位置即可
并在最上面通用区 Dim Var2 As String
Private Sub Form_Load()
Form2.Text1.Text = "my text"
var2 = "my string"
Form2.Show
MsgBox var2
End Sub
我想通过 form2的全局变量 var2,给form2传值。
你一直只在 Form2里面 在通用区Dim宣告 已经等于是Form2本窗体内的 "全局变量" 如果是要给外部使用 Dim 当然不行
假如两个窗体,form1,form2
在form2中定义全局变量 var2 ,并且form2中有一个文本框text1,
然后
我在 form1中,调用 form2,
注,以下代码在 form1中
form2.text1.text="mystring....."
form2.var2="asdfasdf"
form2.show
property let
property get
----------------------------------
那也谢谢你,热心。
form2.text1.text="my text"
form2.show 应该就没问题了
如果只是给窗体的全局变量赋值是不会触发窗体的Load事件,但是调用窗体里的控件就会触发Load事件Form1Private Sub Command1_Click()
Form2.a1 = 1
Form2.a2 = 2
Form2.a3 = 3
Form2.Show
End SubForm2Public a1 As Integer
Public a2 As Integer
Public a3 As IntegerPrivate Sub Form_Load()
Debug.Print a1
Debug.Print a2
Debug.Print a3
End Sub
Form2.var2 = "my string"
Form2.Text1.Text = "my text"Form2.Show
End Sub
'Form2代码
Public m_var2 as string
'Form1代码
dim newfrm as new Form2newfrm.m_var2 = "."
newfrm.TextBox1.text = ".."set newfrm = nothing尽量不要用全局实例名称Form2来实例化显示Form2窗口,一旦全局实例Form2未得到Unload,那么下一次Load事件就不会触发,一些属性根本就不会重新初始化。
form2.var2="my string"
form2.show ’此时,已经不再调用load了
解决办法
如三楼说的,换一下位置也行
或者不在load中取数据,换成Form_Activate事件