Mega Code Archive

 
Categories / VB.Net / Data Structure
 

Change the Max Item Count Allowed Property in Most Recent Used Item List

Imports System Imports System.Windows.Forms Imports System.Collections.Generic Imports System.ComponentModel Public Class MainClass    Shared Sub Main()        Dim the_items As New MostRecentList(Of String)(4)        the_items.Add("A")        the_items.Add("B")        the_items.Add("C")        the_items.Add("D")        the_items.Add("D")        the_items.Add("B")        the_items.Add("F")        For i As Integer = 0 To the_items.Count - 1             Console.WriteLine(the_items.Item(i))        Next i        the_items.MaxItems = 2        Console.WriteLine()        For i As Integer = 0 To the_items.Count - 1             Console.WriteLine(the_items.Item(i))        Next i    End Sub  End Class Public Class MostRecentList(Of ItemType)     Public Sub New(ByVal max_items As Integer)         MaxItems = max_items     End Sub     Private m_Items As New List(Of ItemType)     <Description("The items."), _      Category("Data")> _     Public Property Item(ByVal index As Integer) As ItemType         Get             Return m_Items(index)         End Get         Set(ByVal value As ItemType)             m_Items(index) = value         End Set     End Property     Private m_MaxItems As Integer = 4     <Description("The maximum number of items in the list."), _      Category("Data")> _     Public Property MaxItems() As Integer         Get             Return m_MaxItems         End Get         Set(ByVal value As Integer)             m_MaxItems = value             Do While m_Items.Count > m_MaxItems                 m_Items.RemoveAt(m_Items.Count - 1)             Loop         End Set     End Property     <Description("The current number of items."), _      Category("Data")> _     Public ReadOnly Property Count() As Integer         Get             Return m_Items.Count         End Get     End Property     Public Sub Add(ByVal value As ItemType)         If m_Items.Contains(value) Then m_Items.Remove(value)         m_Items.Insert(0, value)         If m_Items.Count > m_MaxItems Then m_Items.RemoveAt(m_Items.Count - 1)     End Sub     Public Sub Remove(ByVal value As ItemType)         m_Items.Remove(value)     End Sub     Public Sub RemoveAt(ByVal index As Integer)         m_Items.RemoveAt(index)     End Sub End Class