打印本文 打印本文 关闭窗口 关闭窗口
Henry手记-VB.net WinForm中的FORM初探(三)
作者:武汉SEO闵涛  文章来源:敏韬网  点击数2173  更新时间:2009/4/23 19:01:08  文章录入:mintao  责任编辑:mintao
 

    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] 

打印本文 打印本文 关闭窗口 关闭窗口