結(jié)合上一節(jié)介紹的方法 通過Visual Basic Net的菜單設(shè)計器 按照圖 和圖 所示的菜單結(jié)構(gòu)設(shè)計菜單 圖 【MDI編程】項目的菜單結(jié)構(gòu)之一 圖 【MDI編程】項目的菜單結(jié)構(gòu)之二 在利用菜單設(shè)計器設(shè)計完菜單后 分別在窗體中雙擊 新建 退出 層疊顯示 橫行平鋪 縱向平鋪 和 排列圖標 菜單項 這樣Visual Basic Net會在Form vb文件中分別產(chǎn)生這些菜單項的Click事件對應(yīng)的處理代碼 設(shè)定Form 的 IsMdiContainer 屬性值為 True 這把Form 窗體定義為MDI窗體容器 這一步設(shè)置是后面編程的基礎(chǔ) 當設(shè)置此屬性值后 Form 的窗體也發(fā)生了改變 圖 是設(shè)置此屬性后的窗體模樣 圖 把Form 窗體設(shè)置為MDI窗體容器后的模樣 選中圖 中的 窗口 菜單項 并設(shè)置此菜單項的 MdiList 屬性值為 True 其作用是當程序運行后 如果新建了一個MDI窗體 就會在 窗口 菜單項后 自動加入一個以新建MDI窗體名稱命名的菜單項 如果新建了多個MDI窗體 則會在 窗口 菜單項后 會加入以這些MDI窗體名稱命名的菜單項 當MDI窗體被關(guān)閉 那些以此MDI窗體命名的菜單項也會自動刪除 具體可圖 所示 把Visua Basic Net的當前窗口切換到Form vb的代碼編輯窗口 并在定義Form 中組件的代碼區(qū)加入下列代碼 下列代碼是定義一個變量 此變量用以統(tǒng)計程序中新建MDI窗體的數(shù)量 Private iFormCount As Integer = 用下列代碼替換Form vb中的MenuItem 的Click事件對應(yīng)的處理代碼 MenuItem 即為圖 中的 新建 菜單項 下列代碼的作用是在新建一個MDI窗體 Private Sub MenuItem _Click ( ByVal sender As System Object ByVal e As System EventArgs ) Handles MenuItem ClickDim frmTemp As Form = New Form ( ) 新建一個窗體frmTemp MdiParent = Me 為當前創(chuàng)建的窗體設(shè)置MDI父窗體frmTemp Text = MDI窗體 + iFormCount ToString ( )iFormCount = iFormCount + frmTemp Show ( ) 把此MDI窗體顯示出來End Sub 用下列代碼替換Form vb中的MenuItem 的Click事件對應(yīng)的處理代碼 MenuItem 即為圖 中的 退出 菜單項 下列代碼的作用是退出應(yīng)用程序 Private Sub MenuItem _Click ( ByVal sender As System Object ByVal e As System EventArgs ) Handles MenuItem ClickApplication Exit ( ) 退出應(yīng)用程序End Sub 用下列代碼替換Form vb中的MenuItem 的Click事件對應(yīng)的處理代碼 MenuItem 即為圖 中的 層疊顯示 菜單項 下列代碼的作用是層疊排列窗體中的所有MDI窗體 Private Sub MenuItem _Click ( ByVal sender As System Object ByVal e As System EventArgs ) Handles MenuItem ClickMe LayoutMdi ( MdiLayout Cascade ) 層疊排列窗體中的所有MDI窗體End Sub 用下列代碼替換Form vb中的MenuItem 的Click事件對應(yīng)的處理代碼 MenuItem 即為圖 中的 水平平鋪 菜單項 下列代碼的作用是水平平鋪窗體中的所有MDI窗體 Private Sub MenuItem _Click ( ByVal sender As System Object ByVal e As System EventArgs ) Handles MenuItem ClickMe LayoutMdi ( MdiLayout TileHorizontal ) 水平平鋪窗體中的所有MDI窗體End Sub 用下列代碼替換Form vb中的MenuItem 的Click事件對應(yīng)的處理代碼 MenuItem 即為圖 中的 垂直平鋪 菜單項 下列代碼的作用是垂直平鋪窗體中的所有MDI窗體 Private Sub MenuItem _Click ( ByVal sender As System Object ByVal e As System EventArgs ) Handles MenuItem ClickMe LayoutMdi ( MdiLayout TileVertical ) 垂直平鋪窗體中的所有MDI窗體End Sub 用下列代碼替換Form vb中的MenuItem 的Click事件對應(yīng)的處理代碼 MenuItem 即為圖 中的 排列圖標 菜單項 下列代碼的作用是窗體中的所有MDI窗體排列圖標 Private Sub MenuItem _Click ( ByVal sender As System Object ByVal e As System EventArgs ) Handles MenuItem ClickMe LayoutMdi ( MdiLayout ArrangeIcons ) 窗體中的所有MDI窗體排列圖標End Sub至此【MDI編程】項目的全部工作就完成了 圖 圖 和圖 是程序運行后的界面 圖 【MDI編程】運行界面之一 圖 【MDI編程】運行界面之二 圖 【MDI編程】運行界面之三 此時我們注意到圖 所示的 窗口 菜單中增加許多子菜單 而在程序設(shè)計時 并沒有處理這些功能的代碼 這是由于第十一步中設(shè)置 窗口 菜單項的 MdiList 屬性值為 True 造成的 可見正確的設(shè)置組件的屬性值有時的確能夠代替煩雜的代碼編寫工作 五 總結(jié) 本文主要內(nèi)容有二個 其一是介紹的在Visual Basic Net定制不規(guī)則窗體的實現(xiàn)方法 在Visual Basic Net中創(chuàng)建不規(guī)則窗體主要使用的是Region類和GraphicsPath類 GraphicsPath主要是繪制窗體的形狀 Region主要是以GraphicsPath來構(gòu)建窗體 結(jié)合本文的實現(xiàn)思路和具體方法 我想對于其他形狀的窗體 在掌握GraphicsPath類提供的使用方法的前提下 加上對所要創(chuàng)建不規(guī)則窗體的規(guī)劃設(shè)計 用Visual Basic Net實現(xiàn)起來應(yīng)該不算很困難 本文的另外一個主要內(nèi)容就是介紹在Visual Basic Net編寫MDI應(yīng)用程序的基本過程 技巧和注意事項 通過本文的介紹可見Visual Basic Net的MDI編程并沒有什么復(fù)雜的地方 只需了解一些對MDI窗體處理的方法及其調(diào)用方式 當然更重要的是要了解并掌握某些組件的針對MDI的屬性及其設(shè)置方式 lishixinzhi/Article/program/net/201311/11698
十年的應(yīng)縣網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。營銷型網(wǎng)站建設(shè)的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整應(yīng)縣建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。成都創(chuàng)新互聯(lián)公司從事“應(yīng)縣網(wǎng)站設(shè)計”,“應(yīng)縣網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。
要確立父子窗體,那子窗體必須繼承父窗體。實例化子窗體對象調(diào)用Show()方法。
希望采納
直接添加一個MID父窗體或在已有窗體的屬性中找到IsMDIContainer屬性,然后設(shè)置為True,然后創(chuàng)建第二個窗體 ,需要加載子窗體的時候:
Dim NewMDIChild As New Form2
NewMDIChild.MdiParent = Me
NewMDIChild.Show()
Public?Shared?Sub?CheckMDIChildForm(ByVal?MDIForm?As?Windows.Forms.Form,?ByVal?MDIChildForm?As?Windows.Forms.Form,?ByVal?MDIChildFormName?As?String)
If?MDIForm.MdiChildren.Length??1?Then
'如果沒有任何一個MDI子窗體,則創(chuàng)該MDI子窗體的窗體實例
Dim?MDIChildFrm?As?Windows.Forms.Form?=?MDIChildForm?'?定義MDI子窗體
MDIChildFrm.MdiParent?=?MDIForm?'指定父窗體
MDIChildFrm.Show()?'打開窗體
Exit?Sub
Else
Dim?x?As?Integer
Dim?frmyn?As?Boolean
For?x?=?0?To?(MDIForm.MdiChildren.Length)?-?1
Dim?tempChild?As?Windows.Forms.Form?=?CType(MDIForm.MdiChildren(x),?Windows.Forms.Form)
If?tempChild.Name?=?MDIChildFormName?Then
'檢測到有該MDI子窗體,設(shè)為激活?并退出循環(huán)
frmyn?=?True
tempChild.BringToFront()
Exit?For
Else
frmyn?=?False
End?If
Next
If?Not?frmyn?Then
'在打開的窗體中沒檢測到則新建
Dim?MDIChildFrm?As?Windows.Forms.Form?=?MDIChildForm?'?定義MDI子窗體
MDIChildFrm.MdiParent?=?MDIForm?'指定父窗體
MDIChildFrm.Show()?'打開窗體
End?If
End?If
End?Sub
是窗體運行時候自動生成一個窗體,還是你在編寫時候手動加?
如果是已經(jīng)存在的form2, 你可以在form2 load中 寫 me.mdiparent =form1 或者在 form1 中寫me.mdichildform = form2
如果是在運行時新建的話,可以這樣寫
Dim form3 As New Form3
form3.MdiParent = Me
.....
其他屬性值
.....
form3.Show()
dim 一個窗體 as new form
with 一個窗體
.location=...
.size=...'這里是設(shè)置窗體的位置等屬性
end with
一個窗體.show