直接添加一個(gè)MID父窗體或在已有窗體的屬性中找到IsMDIContainer屬性,然后設(shè)置為T(mén)rue,然后創(chuàng)建第二個(gè)窗體 ,需要加載子窗體的時(shí)候:
創(chuàng)新互聯(lián)專(zhuān)業(yè)為企業(yè)提供婁煩網(wǎng)站建設(shè)、婁煩做網(wǎng)站、婁煩網(wǎng)站設(shè)計(jì)、婁煩網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、婁煩企業(yè)網(wǎng)站模板建站服務(wù),十余年婁煩做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
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
'如果沒(méi)有任何一個(gè)MDI子窗體,則創(chuàng)該MDI子窗體的窗體實(shí)例
Dim?MDIChildFrm?As?Windows.Forms.Form?=?MDIChildForm?'?定義MDI子窗體
MDIChildFrm.MdiParent?=?MDIForm?'指定父窗體
MDIChildFrm.Show()?'打開(kāi)窗體
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
'檢測(cè)到有該MDI子窗體,設(shè)為激活?并退出循環(huán)
frmyn?=?True
tempChild.BringToFront()
Exit?For
Else
frmyn?=?False
End?If
Next
If?Not?frmyn?Then
'在打開(kāi)的窗體中沒(méi)檢測(cè)到則新建
Dim?MDIChildFrm?As?Windows.Forms.Form?=?MDIChildForm?'?定義MDI子窗體
MDIChildFrm.MdiParent?=?MDIForm?'指定父窗體
MDIChildFrm.Show()?'打開(kāi)窗體
End?If
End?If
End?Sub
方法如下:
1、打開(kāi)例1.1創(chuàng)建的工程。
2、選擇窗體Form1并雙擊該窗體,出現(xiàn)窗體的調(diào)事件的過(guò)程代碼體。
3、在窗體調(diào)用的過(guò)程代碼體中編制如下過(guò)程代碼:
Private Sub Form_Load()
Form1.Width = 4860
Form1.Height = 2520
End Sub
4、設(shè)置窗體Form1的SartUpPosition屬性為2-屏幕中心,這樣運(yùn)行窗體可以發(fā)現(xiàn),屏幕的大小與例1.6中通過(guò)屬性設(shè)置的大小是一致的。
VB用Show方法顯示窗體時(shí)使用style屬性為1,就可使顯示的窗體以模式窗體顯示。 Show 方法,用以顯示 MDIForm 或 Form 對(duì)象。不支持命名參數(shù)。 說(shuō)明 如果調(diào)用 Show 方法時(shí)指定的窗體沒(méi)有裝載,Visual Basic 將自動(dòng)裝載該窗體。
? private const int GWL_STYLE = (-16);
? private const int GWL_EXSTYLE = (-20);
? private const uint WS_EX_LAYERED = 0x80000;
? private const uint WS_EX_TRANSPARENT = 0x20;
? private const uint WS_THICKFRAME = 262144;
? private const uint WS_BORDER = 8388608;
/// summary使指定 「 see cref="IntPtr"/ 句柄」 窗體 邊框樣式變?yōu)闊o(wú)邊框。/summary
? public static uint 無(wú)邊框窗體(IntPtr 句柄) {
? ? ? uint style = API_窗口.GetWindowLong(句柄, GWL_STYLE);
? ? ? style = ~WS_BORDER;
? ? ? style = ~WS_THICKFRAME;
? ? ? return API_窗口.SetWindowLong(句柄, GWL_STYLE, style); ;
? }
API窗口靜態(tài)類(lèi)
? [DllImport("user32", EntryPoint = "SetWindowLong")]
? public static extern uint SetWindowLong(IntPtr hwnd, int nIndex, uint dwNewLong);
? [DllImport("user32", EntryPoint = "GetWindowLong")]
? public static extern uint GetWindowLong(IntPtr hwnd, int nIndex);
修改窗口位置
/// summary
? /// 設(shè)置窗體的位置和大小。
? /// /summary
? /// param name="hWnd"/param
? /// param name="hWndInsertAfter"用于標(biāo)識(shí)在z-順序的此 CWnd 對(duì)象之前的 CWnd 對(duì)象。
? /// para/para如果uFlags參數(shù)中設(shè)置了SWP_NOZORDER標(biāo)記則本參數(shù)將被忽略。可為下列值之一:
? /// para/paraHWND_BOTTOM:值為1,將窗體置于Z序的底部。如果參數(shù)hWnd標(biāo)識(shí)了一個(gè)頂層窗體,則窗體失去頂級(jí)位置,并且被置在其他窗體的底部。
? /// para/paraHWND_NOTOPMOST:值為-2,將窗體置于所有非頂層窗體之上(即在所有頂層窗體之后)。如果窗體已經(jīng)是非頂層窗體則該標(biāo)志不起作用。
? /// para/paraHWND_TOP:值為0,將窗體置于Z序的頂部。
? /// para/paraHWND_TOPMOST:值為-1,將窗體置于所有非頂層窗體之上。即使窗體未被激活窗體也將保持頂級(jí)位置。/param
? /// param name="x"窗體新的x坐標(biāo)。如hwnd是一個(gè)子窗體,則x用父窗體的客戶(hù)區(qū)坐標(biāo)表示/param
? /// param name="y"窗體新的y坐標(biāo)。如hwnd是一個(gè)子窗體,則y用父窗體的客戶(hù)區(qū)坐標(biāo)表示/param
/// param name="Width"指定新的窗體寬度/param
/// param name="Height"指定新的窗體高度/param
? /// param name="wFlags"/param
? /// returns/returns
? [DllImport("user32.dll", CharSet = CharSet.Ansi, EntryPoint = "SetWindowPos")]
? public static extern int SetWindowPos(IntPtr hWnd, hWndInsertAfter hWndInsertAfter, int x, int y, int Width, int Height, wFlags wFlags);
? /// summary
? /// 調(diào)整指定 「 see cref="IntPtr"/ 句柄」 窗體的位置和尺寸。
? /// /summary
? /// param name="句柄"指定 「 see cref="IntPtr"/ 句柄」 窗體/param
? /// param name="x"橫坐標(biāo)/param
? /// param name="y"縱坐標(biāo)/param
? /// param name="w"寬/param
? /// param name="h"高/param
? public static int 調(diào)整窗體(IntPtr 句柄, int x, int y, int w, int h) {
? ? ? return API_窗口.SetWindowPos(句柄, 0, x, y, w, h, wFlags.SWP_NOZORDER);
? }
? /// summary
? /// 調(diào)整指定 「 see cref="IntPtr"/ 句柄」 窗體的位置。
? /// /summary
? /// param name="句柄"指定 「 see cref="IntPtr"/ 句柄」 窗體/param
? /// param name="x"橫坐標(biāo)/param
? /// param name="y"縱坐標(biāo)/param
? public static int 調(diào)整窗體位置(IntPtr 句柄, int x, int y) {
? ? ? return API_窗口.SetWindowPos(句柄, 0, x, y, 0, 0, wFlags.SWP_NOSIZE | wFlags.SWP_NOZORDER);
? }
網(wǎng)頁(yè)題目:vb.net自定義窗口 vb用設(shè)置主窗體
分享鏈接:http://www.chinadenli.net/article18/doojogp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、響應(yīng)式網(wǎng)站、做網(wǎng)站、網(wǎng)站維護(hù)、、網(wǎng)站營(yíng)銷(xiāo)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)