Public Class BandForm
'Class level variables
'The Collection Array
Private bandStrings As String() = {"Gojira", _
"Lamb of God", _
"Black Flag", _
"Slayer", _
"Morbid Angel", _
"Deicide", _
"NOFX", _
"The Misfits", _
"1349", _
"Dimmu Birgir", _
"Amon Amarth", _
"Old Mans Child", _
"Pantera", _
"Bane", _
"Modern Life Is War", _
"All Shall Perish", _
"Job For A Cowboy", _
"Beneath The Massacre", _
"Behemoth", _
"Black Sabbath"}
'Create private collection variables for it's properties.
Private listTypeString As String
Private indexInteger As Integer
'Create instances of these objects for security purposes.
Private aSortedList As SortedList
Private aHashTabel As Hashtable
Private aStack As Stack
Private aQueue As Queue
Private Sub CloseToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CloseToolStripMenuItem.Click
Me.Close()
End Sub
Private Sub BandForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
With Me
.collectionClassComboBox.SelectedIndex = 0
.Timer.Start()
.dateToolStripStatusLabel.Text = Today.ToShortDateString
.timeToolStripStatusLabel.Text = Now.ToLongTimeString
End With
End Sub
Private Sub collectionClassComboBox_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles collectionClassComboBox.SelectedIndexChanged
'Create a new collection based on the slected collection type.
indexInteger = 0
bandListBox.Items.Clear()
listTypeString = collectionClassComboBox.SelectedItem.ToString
Select Case listTypeString
Case "Original"
displayOriginal()
Case "Hashtable"
aHashTabel = New Hashtable()
Case "Stack"
aStack = New Stack()
Case "Queue"
aQueue = New Queue()
Case "Sorted List"
aSortedList = New SortedList()
End Select
End Sub
Private Sub displayOriginal()
Dim itemString As String
'Display the array in its original Order.
bandListBox.Items.Clear()
For Each itemString In bandStrings
bandListBox.Items.Add(itemString)
Next
End Sub
Private Sub addButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles addButton.Click
Dim keyString As String
Dim itemString As String
'Add the next element to the slected collection.
If indexInteger <= bandStrings.GetUpperBound(0) Then 'End Of Array...
itemString = bandStrings(indexInteger) 'Connects to itemString...
Try
Select Case listTypeString
Case "Original"
MessageBox.Show("Cannot add to the original list.", "Band Collection", _
MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
Case "Hashtable"
keyString = itemString.GetHashCode.ToString
aHashTabel.Add(keyString, itemString)
'Reload the list from the hash table collection.
bandListBox.Items.Clear()
For Each itemString In aHashTabel.Values
bandListBox.Items.Add(itemString)
Next
Case "Stack"
aStack.Push(itemString)
'Reload the list from the stack.
bandListBox.Items.Clear()
For Each itemString In aStack
bandListBox.Items.Add(itemString)
Next
Case "Queue"
aQueue.Enqueue(itemString)
'Reload the list from the queue.
bandListBox.Items.Clear()
For Each itemString In aQueue
bandListBox.Items.Add(itemString)
Next
Case "Sorted List"
keyString = itemString.Substring(0, 3)
aSortedList.Add(keyString, itemString)
'Reload the list from the sorted list collection.
bandListBox.Items.Clear()
For Each itemString In aSortedList.Values
bandListBox.Items.Add(itemString)
Next
indexInteger += 1 'Move to the next array element.
End Select
Catch adding_err As Exception
MessageBox.Show("Your computer has a problem." _
& ControlChars.NewLine _
& "It said: " & adding_err.Message, "Computer problem!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
End Try
Else
MessageBox.Show("No more items for the list.", "Favorite Bands", _
MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
End Sub
Private Sub removeButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles removeButton.Click
Dim keyString As String
Dim itemString As String
'Remove an item from the collection.
Try
Select Case listTypeString
Case "Original"
MessageBox.Show("Cannot remove from the original list.")
Case "Hashtable"
If bandListBox.SelectedIndex <> -1 Then
itemString = bandListBox.SelectedItem.ToString
keyString = itemString.GetHashCode.ToString
aHashTabel.Remove(keyString)
'Reload the list from the has table collection.
bandListBox.Items.Clear()
For Each itemString In aHashTabel.Values
bandListBox.Items.Add(itemString)
Next
Else
MessageBox.Show("Select and item to remove.", "Attention", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
End If
Case "Stack"
aStack.Pop()
'Reload the list from the stack.
bandListBox.Items.Clear()
For Each itemString In aStack
bandListBox.Items.Add(itemString)
Next
Case "Queue:"
aQueue.Dequeue()
'Reload the list from the stack
bandListBox.Items.Clear()
For Each itemString In aQueue
bandListBox.Items.Add(itemString)
Next
Case "Sorted List"
If bandListBox.SelectedIndex <> -1 Then
itemString = bandListBox.SelectedItem.ToString
keyString = itemString.Substring(0, 3)
aSortedList.Remove(keyString)
'Reload the list fromt e sorted list collection.
bandListBox.Items.Clear()
For Each itemString In aSortedList.Values
bandListBox.Items.Add(itemString)
Next
Else
MessageBox.Show("Selected the item to remove.", "Hey...", MessageBoxButtons.OK, MessageBoxIcon.Hand)
End If
End Select
Catch removing_err As Exception
MessageBox.Show("Your computer has a problem." _
& ControlChars.NewLine _
& "It said: " & removing_err.Message, "Computer problem!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
End Try
End Sub
Private Sub Timer_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer.Tick
With Me
.dateToolStripStatusLabel.Text = Today.ToShortDateString
.timeToolStripStatusLabel.Text = Now.ToLongTimeString
End With
End Sub
End Class