直接添加一個MID父窗體或在已有窗體的屬性中找到IsMDIContainer屬性,然后設(shè)置為True,然后創(chuàng)建第二個窗體 ,需要加載子窗體的時候:
創(chuàng)新互聯(lián)建站主營敘州網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,APP應(yīng)用開發(fā),敘州h5微信平臺小程序開發(fā)搭建,敘州網(wǎng)站營銷推廣歡迎敘州等地區(qū)企業(yè)咨詢
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
你的情況應(yīng)該是窗體中嵌入子窗體吧:
主窗體.IsMdiContainer = True
Dim 子窗體 As New Form
子窗體.TopMost=False
子窗體.Show()
子窗體.MdiParent = 主窗體
如果不是嵌入窗體captain2005的回答應(yīng)該沒問題,或者你在被覆蓋的窗體上:
子窗體.TopMost = True ‘將子窗體設(shè)為頂層顯示
NET框架組件太大了 比任何以前所寫的封裝功能的庫都要大 這樣有好處 因為它大幅削減了建立應(yīng)用程序所需編寫的代碼 但是也使我們不可能完全了解該框架組件 但是我們很容易從中找到一些技巧
窗體嵌套
經(jīng)驗豐富的Visual Basic開發(fā)者知道多文檔界面(MDI)應(yīng)用程序能夠包含子窗體 那些子窗體由MDI父窗體管理 但是如果沒有MDI的能力你怎樣實現(xiàn)包含嵌套窗體?例如一個MDI子窗體也可能需要包含另一個窗體
有時能夠使用用戶控件(UserControl)實現(xiàn)這種功能 但是如果你真的需要把一個窗體嵌套進另一個窗體 有多種方法可以實現(xiàn) 窗體衍生自Control類 這意味著它能被放入另一個窗體的控件集合中 使用如下的邏輯
Dim f As New frmEmbed ()Me Controls Add(f)f Show()
但是很不幸 這段代碼將會導致一個運行時(runtime)異常(見圖 )
圖 試圖把一個窗體添加到另一個窗體的控件集合時出現(xiàn)的運行時錯誤
為了避免這種異常 該窗體的TopLevel屬性必須設(shè)置為False(見下面的代碼)
Dim f As New frmEmbed () f TopLevel = False Me Controls Add(f) f Show()
圖 顯示的是使用上面的邏輯實現(xiàn)的一個窗體嵌入另一個窗體 嵌入的窗體有一個標題條(它的顏色是未激活的系統(tǒng)顏色) 因此該嵌入窗體能在容器窗體內(nèi)四處拖動 在圖 中 該窗體從它的開始位置(左上角)拖到了右下角
圖 在容器窗體中有一個嵌入的窗體 嵌入的窗體能在容器窗體中拖動
通常在顯示嵌入的窗體前先設(shè)置它的位置 這只需要簡單的設(shè)置嵌入窗體的Left和Top屬性 嵌入窗體的位置與容器窗體是相對的
與MDI子窗體不同 嵌入窗體能覆蓋容器窗體上的控件 圖 顯示了它們的不同
圖 嵌入窗體(左)可以覆蓋容器窗體上的控件 MDI子窗體(右)不能覆蓋MDI父窗體上的控件
在右邊的MDI例子中 沒有辦法使按鈕隱藏在子窗體的后面 但是在左邊該按鈕被嵌入窗體覆蓋了
當窗體第一次被嵌入時 它將顯示在容器窗體上的已存在的控件的后面 當它被點擊時 它走向前臺并停留在那兒 這會打擾用戶 但是能通過插入下面的代碼防止這種情況發(fā)生
f BringToFront()
嵌入的窗體可以包含其它的嵌入窗體 沒有實際的限制 圖 顯示了一個本身包含嵌入的窗體的嵌入窗體
lishixinzhi/Article/program/net/201311/12398
網(wǎng)站名稱:vb.net窗體嵌套 vb窗體嵌入excel
網(wǎng)頁地址:http://m.newbst.com/article8/dogooip.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、App開發(fā)、App設(shè)計、企業(yè)網(wǎng)站制作、網(wǎng)站營銷、網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)