vb6建立主窗體的子窗體有兩種方法:
創(chuàng)新互聯(lián)建站2013年開創(chuàng)至今,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元仁布做網(wǎng)站,已為上家服務(wù),為仁布各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:13518219792
第一種方法是建立一個(gè)MDI窗體,然后把普通的form窗體設(shè)置成它的子窗體。
第二種方法是使用Windows API設(shè)置一個(gè)普通form窗體為另外一普通窗體的子窗體。
一、先來看看如何建立MDI窗體的子窗體:
1、啟動(dòng)vb6,新建一個(gè)標(biāo)準(zhǔn)EXE工程。
2、在“工程”菜單里選擇“添加MDI窗體”,
點(diǎn)擊“打開”,添加了一個(gè)MDIForm1窗體,
這步也可以工程窗口的窗體圖標(biāo)上右鍵完成。
3、在“工程”菜單里選擇“XXX 屬性”,
在彈出的窗口里把啟動(dòng)對(duì)象設(shè)成MDIForm1。
4、在form1的屬性窗口里,把MDIChild屬性設(shè)置為True。
5、在Private Sub MDIForm_Load()過程里添加form1.show。
6、運(yùn)行程序,看到設(shè)置已經(jīng)成功。
二、使用Windows API建立子窗體:
1、1、啟動(dòng)vb6,新建一個(gè)標(biāo)準(zhǔn)EXE工程。
2、在“工程”菜單里選擇“添加窗體”,
點(diǎn)擊“打開”,添加了一個(gè)form2窗體,
這步也可以工程窗口的窗體圖標(biāo)上右鍵完成。
3、雙擊form1窗體,在通用里加入以下windows API:
Private Declare Function SetParent Lib "user32.dll" ( _
ByVal hWndChild As Long, _
ByVal hWndNewParent As Long) As Long
4、在form1的Private Sub Form_Load()過程里加入
Form2.Show
SetParent Form2.hWnd, Form1.hWnd
Form2.Move 0, 0
5、運(yùn)行程序,可以看form2已經(jīng)是form1的子窗體了。
6、完整程序代碼如下:
Option Explicit
Private Declare Function SetParent Lib "user32.dll" ( _
ByVal hWndChild As Long, _
ByVal hWndNewParent As Long) As Long
Private Sub Form_Load()
Form2.Show
SetParent Form2.hWnd, Form1.hWnd
Form2.Move 0, 0
End Sub
NET框架組件太大了 比任何以前所寫的封裝功能的庫都要大 這樣有好處 因?yàn)樗蠓鳒p了建立應(yīng)用程序所需編寫的代碼 但是也使我們不可能完全了解該框架組件 但是我們很容易從中找到一些技巧
窗體嵌套
經(jīng)驗(yàn)豐富的Visual Basic開發(fā)者知道多文檔界面(MDI)應(yīng)用程序能夠包含子窗體 那些子窗體由MDI父窗體管理 但是如果沒有MDI的能力你怎樣實(shí)現(xiàn)包含嵌套窗體?例如一個(gè)MDI子窗體也可能需要包含另一個(gè)窗體
有時(shí)能夠使用用戶控件(UserControl)實(shí)現(xiàn)這種功能 但是如果你真的需要把一個(gè)窗體嵌套進(jìn)另一個(gè)窗體 有多種方法可以實(shí)現(xiàn) 窗體衍生自Control類 這意味著它能被放入另一個(gè)窗體的控件集合中 使用如下的邏輯
Dim f As New frmEmbed ()Me Controls Add(f)f Show()
但是很不幸 這段代碼將會(huì)導(dǎo)致一個(gè)運(yùn)行時(shí)(runtime)異常(見圖 )
圖 試圖把一個(gè)窗體添加到另一個(gè)窗體的控件集合時(shí)出現(xiàn)的運(yùn)行時(shí)錯(cuò)誤
為了避免這種異常 該窗體的TopLevel屬性必須設(shè)置為False(見下面的代碼)
Dim f As New frmEmbed () f TopLevel = False Me Controls Add(f) f Show()
圖 顯示的是使用上面的邏輯實(shí)現(xiàn)的一個(gè)窗體嵌入另一個(gè)窗體 嵌入的窗體有一個(gè)標(biāo)題條(它的顏色是未激活的系統(tǒng)顏色) 因此該嵌入窗體能在容器窗體內(nèi)四處拖動(dòng) 在圖 中 該窗體從它的開始位置(左上角)拖到了右下角
圖 在容器窗體中有一個(gè)嵌入的窗體 嵌入的窗體能在容器窗體中拖動(dòng)
通常在顯示嵌入的窗體前先設(shè)置它的位置 這只需要簡(jiǎn)單的設(shè)置嵌入窗體的Left和Top屬性 嵌入窗體的位置與容器窗體是相對(duì)的
與MDI子窗體不同 嵌入窗體能覆蓋容器窗體上的控件 圖 顯示了它們的不同
圖 嵌入窗體(左)可以覆蓋容器窗體上的控件 MDI子窗體(右)不能覆蓋MDI父窗體上的控件
在右邊的MDI例子中 沒有辦法使按鈕隱藏在子窗體的后面 但是在左邊該按鈕被嵌入窗體覆蓋了
當(dāng)窗體第一次被嵌入時(shí) 它將顯示在容器窗體上的已存在的控件的后面 當(dāng)它被點(diǎn)擊時(shí) 它走向前臺(tái)并停留在那兒 這會(huì)打擾用戶 但是能通過插入下面的代碼防止這種情況發(fā)生
f BringToFront()
嵌入的窗體可以包含其它的嵌入窗體 沒有實(shí)際的限制 圖 顯示了一個(gè)本身包含嵌入的窗體的嵌入窗體
lishixinzhi/Article/program/net/201311/12398
是的,VB.NET Windows服務(wù)可以添加窗體,通過窗體來顯示服務(wù)的運(yùn)行狀態(tài)。它可以讓你使用強(qiáng)大的編程語言來實(shí)現(xiàn)應(yīng)用程序的功能,從而使服務(wù)變得更加豐富多彩。
要確立父子窗體,那子窗體必須繼承父窗體。實(shí)例化子窗體對(duì)象調(diào)用Show()方法。
希望采納