這樣的話你就不要直接把子窗口show出來,先在父窗口創(chuàng)建一個(gè)子窗口對(duì)象的變量,通過實(shí)例化該變量達(dá)到創(chuàng)建子窗口的目的,然后在下次又要打開子窗口時(shí)也可以通過該變量關(guān)閉原有的子窗口
成都創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供涿鹿網(wǎng)站建設(shè)、涿鹿做網(wǎng)站、涿鹿網(wǎng)站設(shè)計(jì)、涿鹿網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、涿鹿企業(yè)網(wǎng)站模板建站服務(wù),10年涿鹿做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
示例代碼如下(假設(shè)Form1為父窗口,F(xiàn)orm2為子窗口):
Form1的代碼:
Public
Class
Form1
Dim
nform
As
Form2
=
Nothing
Private
Sub
Button1_Click(ByVal
sender
As
System.Object,
ByVal
e
As
System.EventArgs)
Handles
Button1.Click
If
nform
IsNot
Nothing
Then
nform.Close()
nform.Dispose()
End
If
nform
=
New
Form2
nform.Show()
Me.Hide()
End
Sub
End
Class
通過nform變量,你可以很輕易就處理掉原來已經(jīng)打開但隱藏著的子窗口了
直接添加一個(gè)MID父窗體或在已有窗體的屬性中找到IsMDIContainer屬性,然后設(shè)置為True,然后創(chuàng)建第二個(gè)窗體 ,需要加載子窗體的時(shí)候:
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
'如果沒有任何一個(gè)MDI子窗體,則創(chuàng)該MDI子窗體的窗體實(shí)例
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
'檢測(cè)到有該MDI子窗體,設(shè)為激活?并退出循環(huán)
frmyn?=?True
tempChild.BringToFront()
Exit?For
Else
frmyn?=?False
End?If
Next
If?Not?frmyn?Then
'在打開的窗體中沒檢測(cè)到則新建
Dim?MDIChildFrm?As?Windows.Forms.Form?=?MDIChildForm?'?定義MDI子窗體
MDIChildFrm.MdiParent?=?MDIForm?'指定父窗體
MDIChildFrm.Show()?'打開窗體
End?If
End?If
End?Sub
很簡單
菜單的代碼可以這樣,不會(huì)重復(fù)打開,第一點(diǎn)擊的時(shí)候彈出窗體,下次打開就最大化:
If F1.Visible = True Then
F1.WindowState = FormWindowState.Maximized
Else
F1.Show()
End If
加載內(nèi)容本身與是否子窗體沒有關(guān)系。
請(qǐng)你檢查一下你加載的內(nèi)容是不是存在。
下面代碼,不管是否子窗體,都是正常的:
Private?Sub?Form1_Load(ByVal?sender?As?System.Object,?ByVal?e?As?System.EventArgs)?Handles?MyBase.Load
ComboBox1.Items.Add("123")
ComboBox1.Items.Add("223")
ComboBox1.SelectedIndex?=?0
End?Sub
你可以下載附件參考一下!
要在VB.NET中清屏已經(jīng)不再是象是在VB6中那么簡單使用一條Cls就能搞定的,因?yàn)楝F(xiàn)在的VB.NET已經(jīng)是完全面向?qū)ο蟮恼Z言了,方法就不能和以前那樣了,下面給出清空窗體的源代碼,通過單擊按鈕清空,如下:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim g As Graphics
g = Me.CreateGraphics
g.Clear(Me.BackColor)
g.Dispose()
'釋放對(duì)象g所占用的資源
End Sub
OK,程序已經(jīng)成功實(shí)現(xiàn)你要的功能,運(yùn)行環(huán)境VS.NET2003+Windows 2003 Server
歡迎你加入群:30538950進(jìn)行交流!