我做了个小程序
说明:主窗体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

解决方案 »

  1.   

    Private Sub Cmd1_Click() 
    Lb1.Caption = 888
    Form2.Show 1 
    Form2.Lb2.Caption = "我能" 
    End Sub
    这样试试 
      

  2.   

    Private Sub Cmd1_Click() 
    Form2.Show 1 
    Form2.Lb2.Caption = "我能" 
    form2.lb2.refresh     '<-----加上这句
    Lb1.Caption = 888
    lb1.refresh           '<-----加上这句 
    End Sub
      

  3.   

    Private Sub Cmd1_Click() 
    Lb1.Caption = 888
    Form2.Lb2.Caption = "我能" 
    Form2.Show  
    End Sub 
    好像刚才的不对 
      

  4.   

    Private Sub Cmd1_Click()
        Form2.lb2.Caption = "我能"
        lb1.Caption = 888
        Form2.Show 1
    End Sub
      

  5.   

    这样试试:Private Sub Cmd1_Click()
    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
    '因此会显示了.
      

  6.   

    谢谢大侠的点拨!!!
    但有一点还是不太明白,为什么Form2.Show 1 运行后,后面的两项没有运行呢?
      

  7.   


    '因为VB是单线程的,
    Form2.Show 1 '运行后,要结束后再才再接着运行.
    '怎么判断运行结束呢?
    '那就是关闭了.
      

  8.   


    哦!单线程是不是就是一条一条的执行命令啊,但我换个顺序为什么就3个命令一气呵成了呢?
    比如:
    Form2.Lb2.Caption = "我能" 
    Lb1.Caption = 888          
    Form2.Show 1 
    为什么不执行到Form2.Lb2.Caption = "我能" 就截至呢?
      

  9.   

    '单线程就是一条一条运行.前面是赋值,所以马上就可以运行.
    '而Form2.Show 1 是一个窗口显示.而且,你后面有参数1 表示要等这个窗口关闭才结束,
    '当然,如果你改为这样也行.Private Sub Cmd1_Click() 
    Form2.Show              '这样就不等关闭就直接运行了. 
    Form2.Lb2.Caption = "我能" 
    Lb1.Caption = 888 
    End Sub
      

  10.   

    Form2.Show  ‘显示非模式窗口:显示后,不等关闭,直接运行下一句
    Form2.Show 1  ’显示模式窗口:必须等此窗口关闭后才运行下一句
    这些与单线程、多线程没有关系,就是在vc\delphi\pb\vfp中也都有非模式窗口、模式窗口的概念。
      

  11.   

    因为你要是把Lb1.Caption = 888  放在前面就会先执行这句再进入from2,但要是放在后面就会先执行form2了(好像废话哈)。我要说的是当form2.show 1带着这个1的时候,会直到form2关闭才继续form1里面的代码,所以才会在关闭form2的时候才能看到我能。如果把1去掉那程序会在form2初始化结束后继续执行后面的代码而不是等到form2关闭时。不知我说的明不明白。小汗一下