我做了个小程序
说明:主窗体Form1上一按钮Cmd1和一标签Lb1(创建时Caption为空),点Cmd1跳出一子窗体Form2,Form2上一标签Lb2(创建时Caption为空)
目标:鼠标点Cmd1,跳出的Form2上Lb2显示"我能",且Form1上Lb1显示888
我写好后运行时,点Cmd1后Lb1和Lb2均无显示,关闭Form2窗体后Lb1才显示888,再次点Cmd1后Lb2才显示"我能",请大侠帮忙,谢谢!!!
我写的代码:
Private Sub Cmd1_Click()
Form2.Show 1
Form2.Lb2.Caption = "我能"
Lb1.Caption = 888
End Sub
说明:主窗体Form1上一按钮Cmd1和一标签Lb1(创建时Caption为空),点Cmd1跳出一子窗体Form2,Form2上一标签Lb2(创建时Caption为空)
目标:鼠标点Cmd1,跳出的Form2上Lb2显示"我能",且Form1上Lb1显示888
我写好后运行时,点Cmd1后Lb1和Lb2均无显示,关闭Form2窗体后Lb1才显示888,再次点Cmd1后Lb2才显示"我能",请大侠帮忙,谢谢!!!
我写的代码:
Private Sub Cmd1_Click()
Form2.Show 1
Form2.Lb2.Caption = "我能"
Lb1.Caption = 888
End Sub
Lb1.Caption = 888
Form2.Show 1
Form2.Lb2.Caption = "我能"
End Sub
这样试试
Form2.Show 1
Form2.Lb2.Caption = "我能"
form2.lb2.refresh '<-----加上这句
Lb1.Caption = 888
lb1.refresh '<-----加上这句
End Sub
Lb1.Caption = 888
Form2.Lb2.Caption = "我能"
Form2.Show
End Sub
好像刚才的不对
Form2.lb2.Caption = "我能"
lb1.Caption = 888
Form2.Show 1
End Sub
Form2.Lb2.Caption = "我能" '先将Form2上Lb2显示"我能",
Lb1.Caption = 888 '再将Form1上Lb1显示888
Form2.Show 1 '再显示Form2
End Sub
'以下是你的:我的分析
Private Sub Cmd1_Click()
Form2.Show 1 '先显示 '显示的时候,后面没有运行.也就不会出现Form2上Lb2显示"我能",Form1上Lb1显示888了Form2.Lb2.Caption = "我能" '将Form2上Lb2显示"我能",
Lb1.Caption = 888 '将Form1上Lb1显示888
End Sub'如果你再运行一次.因为上次运行时.
'Form2.Lb2.Caption = "我能" '将Form2上Lb2显示"我能",
'Lb1.Caption = 888 '将Form1上Lb1显示888
'因此会显示了.
但有一点还是不太明白,为什么Form2.Show 1 运行后,后面的两项没有运行呢?
'因为VB是单线程的,
Form2.Show 1 '运行后,要结束后再才再接着运行.
'怎么判断运行结束呢?
'那就是关闭了.
哦!单线程是不是就是一条一条的执行命令啊,但我换个顺序为什么就3个命令一气呵成了呢?
比如:
Form2.Lb2.Caption = "我能"
Lb1.Caption = 888
Form2.Show 1
为什么不执行到Form2.Lb2.Caption = "我能" 就截至呢?
'而Form2.Show 1 是一个窗口显示.而且,你后面有参数1 表示要等这个窗口关闭才结束,
'当然,如果你改为这样也行.Private Sub Cmd1_Click()
Form2.Show '这样就不等关闭就直接运行了.
Form2.Lb2.Caption = "我能"
Lb1.Caption = 888
End Sub
Form2.Show 1 ’显示模式窗口:必须等此窗口关闭后才运行下一句
这些与单线程、多线程没有关系,就是在vc\delphi\pb\vfp中也都有非模式窗口、模式窗口的概念。