Here is an example of strongly typed collection for type UserControl:
Class UserControlCollection
Inherits System.Collections.CollectionBase
Public Sub New()
MyBase.New()
End Sub
Public Sub New(ByVal useValue As UserControlCollection)
MyBase.New()
Me.AddRange(useValue)
End Sub
Public Sub New(ByVal useValue() As UserControl)
MyBase.New()
Me.AddRange(useValue)
End Sub
Default Public Property Item(ByVal intIndex As Integer) As UserControl
Get
Return CType(List(intIndex), UserControl)
End Get
Set(ByVal Value As UserControl)
List(intIndex) = value
End Set
End Property
Public Function Add(ByVal useValue As UserControl) As Integer
Return List.Add(useValue)
End Function
Public Overloads Sub AddRange(ByVal useValue() As UserControl)
Dim Counter As Integer = 0
Do While (Counter < useValue.Length)
Me.Add(useValue(Counter))
Counter = (Counter + 1)
Loop
End Sub
Public Overloads Sub AddRange(ByVal useValue As UserControlCollection)
Dim Counter As Integer = 0
Do While (Counter < useValue.Count)
Me.Add(useValue(Counter))
Counter = (Counter + 1)
Loop
End Sub
Public Function Contains(ByVal useValue As UserControl) As Boolean
Return List.Contains(useValue)
End Function
Public Sub CopyTo(ByVal useArray() As UserControl, ByVal intIndex As
Integer)
List.CopyTo(useArray, intIndex)
End Sub
Public Function IndexOf(ByVal useValue As UserControl) As Integer
Return List.IndexOf(useValue)
End Function
Public Sub Insert(ByVal intIndex As Integer, ByVal useValue As UserControl)
List.Insert(intIndex, useValue)
End Sub
Public Shadows Function GetEnumerator() As UserControlEnumerator
Return New UserControlEnumerator(Me)
End Function
Public Sub Remove(ByVal useValue As UserControl)
List.Remove(useValue)
End Sub
Public Class UserControlEnumerator
Inherits Object
Implements System.Collections.IEnumerator
Private Base As System.Collections.IEnumerator
Private Local As System.Collections.IEnumerable
Public Sub New(ByVal useMappings As UserControlCollection)
MyBase.New()
Me.Local = CType(useMappings, System.Collections.IEnumerable)
Me.Base = Local.GetEnumerator
End Sub
Public ReadOnly Property Current() As UserControl
Get
Return CType(Base.Current, UserControl)
End Get
End Property
ReadOnly Property System_Collections_IEnumerator_Current() As Object
Implements System.Collections.IEnumerator.Current
Get
Return Base.Current
End Get
End Property
Public Function MoveNext() As Boolean
Return Base.MoveNext
End Function
Function System_Collections_IEnumerator_MoveNext() As Boolean Implements
System.Collections.IEnumerator.MoveNext
Return Base.MoveNext
End Function
Public Sub Reset()
Base.Reset()
End Sub
Sub System_Collections_IEnumerator_Reset() Implements
System.Collections.IEnumerator.Reset
Base.Reset()
End Sub
End Class
End Class
#End Region