有一個MDI窗體叫MainForm,多個子窗體,如Form1,Form2……
要使子窗體同時只能顯示一個,那麼
方法1
dim Form1 as new form1
Form1.showDialog()
此方法一個MDI窗體同時只能顯示一個,
方法2
在每一個子窗體的應用單態設計模式
在每一個子窗體上聲明
private sub new()
end sub
Public Shared NewMe……
MDI窗體調用時
dim form1 as form1=form1.NewME
form1.show()
這種方法每一個子窗體都要應用單態,代碼重複多,不好
方法3
是方法2的改良
先寫一個ChildForm繼承Form
在窗體上聲明
private sub new()
end sub
Public Shared NewMe……
再把所有的子窗體繼承它
MDI窗體調用時
dim form1 as form1=form1.NewME
form1.show()
這種方法很好,代碼也少
方法4
利用MDI窗體的Controls屬性
循環檢測當是否以存在所需子窗體
存在則
.show
.Activate
不存在則new了再.show
方法5
在MDI窗體上
Dim Form1 as form1
Friend Sub ShowForm1()
If Form1 Is Nothing OrElse Form1.IsDisposed Then
Form1 = New Form1
Form1.MdiParent = Me
End If
Form1.Show()
Form1.Activate()
End Sub
這種方法的缺點,每一個子窗體都要寫一個這樣的方法
方法6
利用泛型改良方法5
先寫一個ChildFormManager類
''' <summary>
''' 調用子窗口
''' </summary>
''' <typeparam name="T"></typeparam>
''' <remarks></remarks>
Public Class ChildFormManager(Of T As {Form, New})
Public Shared Sub show(ByVal myform As T, ByVal Mdi As Form)
If myform Is Nothing OrElse myform.IsDisposed Then
myform = New T
myform.MdiParent = Mdi
End If
myform.Show()
myform.Activate()
End Sub
End Class
在MDI窗體中這樣調用
dim Form1 as Form1
form1=ChildFormManager(of Form1).show(form1,Me)
6種方法使MDI父窗體調用子窗體(子窗體同時只能顯示一個)
種方法使MDI父窗體調用子窗體(子窗體同時只能顯示一個)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
"試圖運行項目時出錯,無法啓動調試,綁定句柄無效"
chulaixi
2018-08-27 07:13:33
error C2011: “fd_set”: “struct”類型重定義
无证临时程序员
2018-08-26 15:57:14
VS2005 MFC 多語言 國際化
无证临时程序员
2018-08-26 15:57:04
LNK2005與頭文件中的全局常量
无证临时程序员
2018-08-26 15:57:02
刪除VS2008/VS2005/VS2003中最近的項目
jasonsue
2018-08-26 07:09:24
fatal error C1083: Cannot open include file: ' VS2005中添加 include 目錄方法
unicornhx
2018-08-26 03:51:53
如何設置VS2005風格環境
webjie
2018-08-25 23:57:28
如何恢復VS2005窗口布局
webjie
2018-08-25 23:56:57
AfxMessageBox的問題
freedawn
2018-08-25 20:25:08
WTL通用對話框dll鏈接問題
pcjbird
2018-08-24 04:15:13
奇怪的VS2005斷點失效問題
pcjbird
2018-08-24 04:15:13
datagridview中的數據導出到excel過程
sanwaxubin
2018-08-24 02:34:06
DataGridView學習筆記
sanwaxubin
2018-08-24 02:34:06
訪問IIS元數據庫失敗
sanwaxubin
2018-08-24 02:34:06