VB.NET MDI子窗體實例化問題解決方案
VB.NET的出現(xiàn)幫助開發(fā)人員解決了以前很難實現(xiàn)的各種問題。下面大家就可以通過對VB.NET MDI子窗體在實際編寫中遇到的實例化問題解決方法進行一個詳細的了解,從而掌握這一問題的防范技巧。#t#
VB.NET MDI子窗體被多次實例化防范方法一
可能沒有什么實用性,只適合簡單項目:
- Dim frmTmp As ClassForm
- "實現(xiàn)已經(jīng)設計好了一個稱作
(類名為)ClassForm的表單 - frmTmp = New ClassForm
- "在此定義它的一個實例
- frmTmp.ShowDialog()
- "作為模式窗體顯示
這樣在當前窗體沒有關閉以前,其他form上的菜單按鈕都不可用,巧妙使用可以避免多次實例化的問題。
VB.NET MDI子窗體被多次實例化防范方法二
只適用于,form不是特別多,且多運行時占用內存沒有特殊要求的場合
在項目運行時,分別定義每個可能用到的form的實例,但不顯示,只有在需要顯示的時候每次調用,x.show(x為想顯示的form實例名),關閉的時候使用x.hide即可。
VB.NET MDI子窗體被多次實例化防范方法三
分別定義每個需要顯示的form類的全局變量,在實際顯示窗體前使用以下代碼:
- If frm Is Nothing OrElse
frm.IsDisposed Then- frm = New Form1
- frm.Show()
- Else
- frm.Activate()
- End If
VB.NET MDI子窗體被多次實例化防范方法四
本方法特別適用于多文檔界面:
- Dim frmTmp As Form
- "搜索每個MDI子窗體一般打開的子
窗體不會太多,所以不存在速度問題- For Each frmTmp In Me.MdiChildren
- "if 找到你想顯示的ClassFrm窗體
- If TypeOf frmTmp Is ClassFrm Then
- frmTmp.Activate()
- Exit Sub
- End If
- Next
- "如果MDI子窗體中沒有你想顯示的窗體
- "則定義新的實例,并顯示。
- frmTmp = New ClassFrm400
- frmTmp.MdiParent = Me
- frmTmp.Show()