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中加载创建窗体。 |
GetDropDownForm | 根据窗体名称来获得下拉窗体。 |
Show | 根据窗口名称显示窗口。 |
GetFormByName | 根据窗体名称获得一个窗体的引用。此时窗体只是被创建一个实例,并没有打开。 |
CreateNewFormByName | 根据窗体名称获得一个窗体的引用。 |
示例:
VB.Net |
'定义一个自己维护的窗体集合,这方便自己维护一个窗体集合,例如系统中的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中使用 '如果有新添加窗体了,执行下面的语句可以将新增窗体添加到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() '正常情况下,一个窗体只能被创建打开一次。这是因为我们平台里面定位表是通过:窗体名称——>表名称来查找定位的, '如果允许相同名称的窗体同时打开的话,那么我们就无法准确地定位到指定的表并进行处理了。那么我们如何实现 '自定义窗体当作模板重复利用呢?就通过CreateNewFormByName来忽略窗体名称重复创建一个新的实例,然后给窗体 '重命名 frm=Proj.Forms.CreateNewFormByName("自定义窗体") '一定记得重命名 frm.Name="新的窗体名称" frm.ShowType=FormShowType.InDesktopTab frm.ShowByShowType() |
C# |
// 定义一个自己维护的窗体集合,这方便自己维护一个窗体集合,例如系统中的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中使用 // 如果有新添加窗体了,执行下面的语句可以将新增窗体添加到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(); // 正常情况下,一个窗体只能被创建打开一次。这是因为我们平台里面定位表是通过:窗体名称——>表名称来查找定位的, // 如果允许相同名称的窗体同时打开的话,那么我们就无法准确地定位到指定的表并进行处理了。那么我们如何实现 // 自定义窗体当作模板重复利用呢?就通过CreateNewFormByName来忽略窗体名称重复创建一个新的实例,然后给窗体 // 重命名 frm = Proj.Forms.CreateNewFormByName("自定义窗体"); // 一定记得重命名 frm.Name = "新的窗体名称"; frm.ShowType = FormShowType.InDesktopTab; frm.ShowByShowType(); |