papapa314 发表于 2011-1-24 19:04:25

(已解决)如果一个程序中建了两个form,如何才能在只关闭一个?

本帖最后由 papapa314 于 2011-1-25 01:37 编辑

如果一个程序中建了两个form,关闭其中一个的话另外一个就会被关闭,有没有办法能在关闭一个form的同时不关闭另外一个?

pusofalse 发表于 2011-1-24 19:23:08

用OnEvent模式。或者使用GUIGetMsg的高级选项,判断消息发生在哪个Form中。

guland 发表于 2011-1-24 19:46:59

如果是AU3的话 可以用 GUIDelete

papapa314 发表于 2011-1-24 20:42:35

回复 2# pusofalse

请问能不能举个例子呢?谢谢你的帮忙!

papapa314 发表于 2011-1-24 20:52:15

本帖最后由 papapa314 于 2011-1-24 21:37 编辑

回复 2# pusofalse

While 1
        $nMsg = GUIGetMsg()
        Select
                Case $nMsg=$Form1_1 And $nMsg=$GUI_EVENT_CLOSE

                                              
                        Exit

        EndSelect
WEnd


用这样的好像不行,会直接退出!!

pusofalse 发表于 2011-1-24 23:24:45

本帖最后由 pusofalse 于 2011-1-24 23:26 编辑

回复 5# papapa314


   你用了Exit语句,当然会退出。需要关闭的只是窗口,并不是整个进程。当年也犯过如此的错误,愣是没转过弯来。改成GUIDelete($Form1_1)或者GUISetState(@SW_HIDE, $Form1_1)就行了。
另外,Case $nMsg=$Form1_1 And $nMsg=$GUI_EVENT_CLOSE 应该改成Case $nMsg = $GUI_EVENT_CLOSE And $nMsg = $Form1_1。

papapa314 发表于 2011-1-25 00:13:38

回复 6# pusofalse


    谢谢你的帮助!!!

papapa314 发表于 2011-1-25 01:16:39

本帖最后由 papapa314 于 2011-1-25 01:37 编辑

回复 6# pusofalse
刚问了以下的问题,不过现在自己已经尝试解决了,把form3的信息写在koda的编辑区域里面,然后设置为hide, 当Case $nMsg=$MenuItem4 And $nMsg=$Form1,就把form3设置为show,这样操作就不会出错了,希望对大家都有帮助!




现在又遇到一个新问题了,如果我点击form1的一个菜单,弹出一个form2,然后再对这个form2进行操作,写了这样的代码,老是出错。用了GUISetState(@SW_HIDE, $Form3),可能第二次想再把Form3给调出来就不行了。
希望斑竹能够给点提示!
    While 1
        $nMsg = GUIGetMsg(1)
        Select
        Case $nMsg=$GUI_EVENT_CLOSE And $nMsg=$Form1                       
                Exit
                Case $nMsg=$MenuItem4 And $nMsg=$Form1
        $Form3 = GUICreate("", 335, 149, 228, 163)
        $Button31 = GUICtrlCreateButton("点击", 116, 112, 97, 33)
        GUISetState(@SW_SHOW)
      While 1
            
                $msg3 = GUIGetMsg(1)

                Select
                     Case $msg3=$GUI_EVENT_CLOSE And $nMsg3=$Form3
             GUISetState(@SW_HIDE, $Form3)

                     Case $msg3=$Button31 And $nMsg3=$Form3
                     MsgBox(0,"","点到按钮了")
          EndSelect

      WEnd
               

EndSelect
WEnd

kingfirekkk 发表于 2011-1-25 08:16:55

不错,我也有遇过同样的问题,第二个GUI在开第二次时就开不了了.....

cf19870928 发表于 2011-9-2 15:08:34

谢谢大家学习了
页: [1]
查看完整版本: (已解决)如果一个程序中建了两个form,如何才能在只关闭一个?