主窗体设计
主窗體設(shè)計
? ? ? ? ? ?首先說明什么是MDI窗體,我就犯了一個很二的錯誤,直接添加了一個窗體把窗體上的所有東西都設(shè)計好了,最后發(fā)現(xiàn)想把它變成MDI窗體,總是實現(xiàn)不了,一查發(fā)現(xiàn),這個窗體是固有的,不是自己自定義添加的。
? ? ? ? ? ?添加MDI窗體,在工程中第二個即為添加MDI窗體,而且,一個工程中只允許有一個MDI窗體,如果添加了一個之后就不可以添加第二個,這一項就會變?yōu)榛疑?#xff0c;不可用。
? ? ? ? ? ?在MDI窗體上是無法直接添加控件的,添加的控件需要一個容器,因此,先添加一個picture控件,然后再在picture控件中添加各種控件,即可。
? ? ? ? ? 子窗體的顯示問題,主窗體設(shè)計好了之后,把其他所有的窗體的MDIchild屬性設(shè)置為true,login登陸窗體的MDIchild屬性不可以設(shè)置為true否則會報錯,如下
??????????????????????????????????????
? ? ? ? ? 調(diào)試報錯,flogin.show vbmodal,所以不要把login窗體的MDIchild屬性設(shè)置為true即可,這里在類模塊中把登陸窗體抽象為模式的,如果沒有抽象出來的話,應(yīng)該也可以設(shè)置為MDIchild窗體。
第一種顯示子窗體的方法,即在MDI窗體的所有MDIchild單擊事件中,添加代碼Picture1.Visible= False,以frmabout窗體為例如下
Private Subfrmaboutmenu_Click()
frmAbout.Show
Picture1.Visible = False
End Sub
? ? ? ? ? ? 但是這樣的效果并不好,只能顯示菜單項,MDI窗體中的所有的其他內(nèi)容都無法顯示出來,因為MDI窗體上的所有控件和外觀的設(shè)計都是添加在picture控件中的,所以一旦picture控件不可見,其上所添加的所有東西都不可見,效果如下
? ? ? ? ? ? 第二種顯示子窗體的方法,使用SetParent 函數(shù),在類模塊中添加該函數(shù),然后在MDI窗體的MDIchild窗體的單擊事件中添加代碼,以frmabout窗體為例,但是會報錯,如下
Private Subfrmaboutmenu_Click()
frmAbout.Show
SetParent frmAbout.hWnd,frmmain.hWnd
End Sub
解決辦法,把代碼改為如下所示,結(jié)果嘛就是perfect了。
Private Subfrmaboutmenu_Click()
frmAbout.Show
SetParent frmAbout.hWnd, Picture1.hWnd
End Sub
總結(jié)