Overridable Function GetEnumerator() As _
IEnumerator Implements IEnumerable.GetEnumerator
‘返回可循环访问集合的枚举数。一旦为类定义了Ienumerable接口,就必须要重写
GetEnumerator。调用 GetEnumerator 时,它将构建一个枚举数对象,其中包含集合中
的当前版本号以及对集合项的引用。每次访问枚举数时,它都会将枚举数的版本与集合
的版本进行比较。如果版本不匹配,则认为集合被更改,从而发生异常。
Return c.GetEnumerator
End Function
End Class 通过这个类,你可以获得自已的 collection of forms. 现在的Forms具有 collection与枚举的特点。即从 collection中增加或删除相应的form 在主程序中form1的 New 过程中(被region折起来了,详见本系列讨论的第一节), 加入下一句: Forms.Add(Me) 需要注意的是: 这一句话应该要加在InitializeComponent()之后。这是因为,我们防止重复 加入一个form的手段是运用form的name进行判断的。而正如我在第一节中所 描述的那样,系统把初始化的内容,包括name是写在InitializeComponent() 子过程中的。由于每new一个实例,都会调用它一次,所以必须在add方法中 加入判断重复性的内容。 在 Dispose 方法中,加入下一句: Forms.Remove(Me) 在这里,我们可以回顾一下第一节中谈到的析构的问题,由于Forms是全局的, 所以当一个form关闭时,它并没有退出生存期,所以应该将关闭的这个form 从集合中删除掉。为什么关闭时会调用Dispose方法的问题请回头看一下第一节。 你的程序中如果有很多个form,你要在每个form的New与dispose方法里中加入上两句 接下来你就可以使用了: Dim frm As Form For Each frm In Forms If frm.Name = "Form2" Then frm.Close() End If Next
现在的forms比以前那一个Count属性的集合使用方法更灵活,内容更多。当然损失的是自动的功能。
在多窗体中使用时,还是请参看第二节的使用方法,综合考虑一下。
----
声明:本文版权与解释权归韩睿所有,如需转载,请保留完整的内容及此声明。
QQ: 18349592
上一页 [1] [2] [C语言系列]C# WinForm 中Label自动换行 解决方法 [电脑应用]c# winform 打包部署 自定义界面 或设置开机启动 [电脑应用]C# WinForm 关闭登陆窗体,打开主窗体的实现 [C语言系列]winform datagridview如何获取选中行的索引 [C语言系列]c# _winform实现网页上用户自动登陆,模拟网站登录 [C语言系列]C#的winform中实现tabPage的隐藏 . [C语言系列]NET 中C#的switch语句的语法 [C语言系列]C# WinForm中Application.StartupPath与AppDomain… [系统软件]托拽Explore中的文件到VB.net的窗口 [系统软件]WinForm 程序实现XP风格
|