SmFormCollection是一個SmForm的集合,可以通過此類來維護一個SmForm集合。
構造函數
構造函數 | 說明 |
SmFormCollection(bool manual=false) | manual表示是否自己來維護此集合。如果為True,則需要自己一個SmForm一個SmForm地進行添加、刪除來維護整個集合,方便自定義使用。如果為False,則表示直接返回當前所有用戶窗體的集合。默認值為False. |
常用屬性
屬性名稱 | 說明 |
Count | 返回當前窗體集合中包含窗體的數量。 |
Item(索引器) | 通過窗體名稱返回相應的窗體。 |
常用方法
方法名稱 | 說明 |
Add(string FormName, SmForm frm) | 添加一個窗體。通過名稱進行窗體維護。 |
Add(SmForm frm) | 添加一個窗體。 |
Remove(string FormName) | 移除相應名稱的窗體。 |
Clear | 清空所有窗體。 |
Contains(string FormName) | 是否包含指定名稱的Form. |
ReLoadUserForms | 重新加載所有用戶窗體。僅使用在Proj.Forms這樣的場景。其他個人自定義使用場景可以忽略此方法。 |
GetDropDownForm(string FormName, bool UseDatabaseData = false) | 根據窗體名稱來獲得下拉窗體。 |
CreateForm | 根據完整的類全名來獲得相應窗體對象。適合從第三方dll中加載創(chuàng)建窗體。 |
GetDropDownForm | 根據窗體名稱來獲得下拉窗體。 |
Show | 根據窗口名稱顯示窗口。 |
GetFormByName | 根據窗體名稱獲得一個窗體的引用。此時窗體只是被創(chuàng)建一個實例,并沒有打開。 |
CreateNewFormByName | 根據窗體名稱獲得一個窗體的引用。 |
示例:
VB.Net |
'定義一個自己維護的窗體集合,這方便自己維護一個窗體集合,例如系統(tǒng)中的Proj.OpenedForms Dim frms As New SmFormCollection(True) Dim frm As New SmForm frm.Name="Test" '直接添加窗體,名稱會取窗體的名稱 frms.Add(frm) frm=Proj.Forms("員工管理") '根據名稱來維護窗體 frms.Add("員工管理",frm) '可以判斷集合中是否包含指定名稱的窗體 If frms.Contains("Test") Then frms.Remove("Test") End If '根據窗體名稱,到索引器取相應的窗體 If frms("員工管理").IsOpened Then Dim intCount As Integer=frms("員工管理").Grids.Count Proj.MsgDebug.Add("窗體中共有{0}個表。" , intCount) Else '打開方式一 frms.Show("員工管理") '打開方式二 frms("員工管理").Show() End If '以下這些僅適合在Proj.Forms中使用 '如果有新添加窗體了,執(zhí)行下面的語句可以將新增窗體添加到Proj.Forms集合中 Proj.Forms.ReLoadUserForms() 'Show的第二個參數表示是否到后臺加載表。此方法可以保證新增的窗體可以被正常打開。 Proj.Forms.Show("員工管理",True) '打開引用第三方dll中做的基于SmForm做的自定義窗體。 Proj.Forms.CreateForm("sanMuSoft.CS.Winforms.UserThirdPartForm",Path.Combine(Proj.ApplicationPath,"ThirdPartForm.dll")) '打開下拉窗體 Proj.Forms.GetDropDownForm("下拉窗體名稱") '獲得窗體 frm=Proj.Forms.GetFormByName("員工管理") frm.Width=400 frm.Height=600 '以模式窗體打開 frm.ShowDialog() '正常情況下,一個窗體只能被創(chuàng)建打開一次。這是因為我們平臺里面定位表是通過:窗體名稱——>表名稱來查找定位的, '如果允許相同名稱的窗體同時打開的話,那么我們就無法準確地定位到指定的表并進行處理了。那么我們如何實現 '自定義窗體當作模板重復利用呢?就通過CreateNewFormByName來忽略窗體名稱重復創(chuàng)建一個新的實例,然后給窗體 '重命名 frm=Proj.Forms.CreateNewFormByName("自定義窗體") '一定記得重命名 frm.Name="新的窗體名稱" frm.ShowType=FormShowType.InDesktopTab frm.ShowByShowType() |
C# |
// 定義一個自己維護的窗體集合,這方便自己維護一個窗體集合,例如系統(tǒng)中的Proj.OpenedForms SmFormCollection frms = new SmFormCollection(true); SmForm frm = new SmForm(); frm.Name = "Test"; // 直接添加窗體,名稱會取窗體的名稱 frms.Add(frm); frm = Proj.Forms["員工管理"]; // 根據名稱來維護窗體 frms.Add("員工管理", frm); // 可以判斷集合中是否包含指定名稱的窗體 if (frms.Contains("Test")) frms.Remove("Test"); // 根據窗體名稱,到索引器取相應的窗體 if (frms["員工管理"].IsOpened) { int intCount = frms["員工管理"].Grids.Count; Proj.MsgDebug.Add("窗體中共有{0}個表。", intCount); } else { // 打開方式一 frms.Show("員工管理"); // 打開方式二 frms["員工管理"].Show(); } // 以下這些僅適合在Proj.Forms中使用 // 如果有新添加窗體了,執(zhí)行下面的語句可以將新增窗體添加到Proj.Forms集合中 Proj.Forms.ReLoadUserForms(); // Show的第二個參數表示是否到后臺加載表。此方法可以保證新增的窗體可以被正常打開。 Proj.Forms.Show("員工管理", true); // 打開引用第三方dll中做的基于SmForm做的自定義窗體。 Proj.Forms.CreateForm("sanMuSoft.CS.Winforms.UserThirdPartForm", Path.Combine(Proj.ApplicationPath, "ThirdPartForm.dll")); // 打開下拉窗體 Proj.Forms.GetDropDownForm("下拉窗體名稱"); // 獲得窗體 frm = Proj.Forms.GetFormByName("員工管理"); frm.Width = 400; frm.Height = 600; // 以模式窗體打開 frm.ShowDialog(); // 正常情況下,一個窗體只能被創(chuàng)建打開一次。這是因為我們平臺里面定位表是通過:窗體名稱——>表名稱來查找定位的, // 如果允許相同名稱的窗體同時打開的話,那么我們就無法準確地定位到指定的表并進行處理了。那么我們如何實現 // 自定義窗體當作模板重復利用呢?就通過CreateNewFormByName來忽略窗體名稱重復創(chuàng)建一個新的實例,然后給窗體 // 重命名 frm = Proj.Forms.CreateNewFormByName("自定義窗體"); // 一定記得重命名 frm.Name = "新的窗體名稱"; frm.ShowType = FormShowType.InDesktopTab; frm.ShowByShowType(); |