I'm stuck on the code in the Save Artist (On Click). I need to find a way to update the Artist ListBox.
*****************************************************************************
Header:CODE
Imports System.IO
Imports System.Text
Imports System.Xml
Public Class MusicPerfection_Form
Private Private_Music As List(Of Artist)
*****************************************************************************
Form (On Load):CODE
Private Sub MusicPerfection_Form_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Try
Private_Music = New List(Of Artist)()
Dim XMLReader_Database As New XmlTextReader("C:\database.xml")
Dim New_Artist As New Artist()
Dim New_Album As New Album()
Dim New_Song As New Song()
While XMLReader_Database.Read()
If XMLReader_Database.NodeType = XmlNodeType.Element Then
Select Case XMLReader_Database.Name
Case "Artist"
New_Artist = New Artist()
New_Artist.Name = XMLReader_Database.GetAttribute("Name")
New_Artist.Origin = XMLReader_Database.GetAttribute("Origin")
New_Artist.Website = XMLReader_Database.GetAttribute("Website")
New_Artist.WikipediaWebsite = XMLReader_Database.GetAttribute("WikipediaWebsite")
New_Artist.OtherWebsite = XMLReader_Database.GetAttribute("OtherWebsite")
New_Artist.Status = XMLReader_Database.GetAttribute("Status")
Private_Music.Add(New_Artist)
New_Artist.Index = Private_Music.IndexOf(New_Artist)
Exit Select
Case "Album"
New_Album = New Album()
New_Album.Name = XMLReader_Database.GetAttribute("Name")
New_Album.Year = XMLReader_Database.GetAttribute("Year")
New_Album.Art = XMLReader_Database.GetAttribute("Art")
New_Album.WikipediaWebsite = XMLReader_Database.GetAttribute("WikipediaWebsite")
New_Album.OtherWebsite = XMLReader_Database.GetAttribute("OtherWebsite")
New_Album.TotalCDs = XMLReader_Database.GetAttribute("TotalCDs")
New_Album.TotalTracks = XMLReader_Database.GetAttribute("TotalTracks")
New_Album.Status = XMLReader_Database.GetAttribute("Status")
New_Artist.Albums.Add(New_Album)
New_Album.Index = New_Artist.Albums.IndexOf(New_Album)
Exit Select
Case "Song"
New_Song = New Song()
New_Song.Name = XMLReader_Database.GetAttribute("Name")
New_Album.Songs.Add(New_Song)
New_Song.Index = New_Album.Songs.IndexOf(New_Song)
Exit Select
Case "CD"
New_Song.CD = XMLReader_Database.ReadString()
Exit Select
Case "Track"
New_Song.Track = XMLReader_Database.ReadString()
Exit Select
Case "Lyrics"
New_Song.Lyrics = XMLReader_Database.ReadString()
Exit Select
Case "Status"
New_Song.Status = XMLReader_Database.ReadString()
Exit Select
End Select
End If
End While
Artists_ListBox.DataSource = Private_Music
Artists_ListBox.DisplayMember = "Name"
Albums_ListBox.DataSource = Private_Music(0).Albums
Albums_ListBox.DisplayMember = "Name"
Songs_ListBox.DataSource = Private_Music(0).Albums(0).Songs
Songs_ListBox.DisplayMember = "Name"
XMLReader_Database.Close()
Catch ex As Exception When File.Exists("C:\database.xml") = False
' Do Nothing '
End Try
End Sub
*****************************************************************************
Save MenuItem (On Click):CODE
Private Sub MusicPerfection_File_Save_MenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MusicPerfection_File_Save_MenuItem.Click
Dim XMLWriter_Database As New XmlTextWriter("C:\database.xml", Encoding.UTF8)
XMLWriter_Database.Formatting = Formatting.Indented
XMLWriter_Database.WriteStartDocument()
XMLWriter_Database.WriteStartElement("Music")
For Each Artist As Artist In Private_Music
XMLWriter_Database.WriteStartElement("Artist")
XMLWriter_Database.WriteAttributeString("Name", Artist.Name)
XMLWriter_Database.WriteAttributeString("Origin", Artist.Origin)
XMLWriter_Database.WriteAttributeString("Website", Artist.Website)
XMLWriter_Database.WriteAttributeString("WikipediaWebsite", Artist.WikipediaWebsite)
XMLWriter_Database.WriteAttributeString("OtherWebsite", Artist.OtherWebsite)
XMLWriter_Database.WriteAttributeString("Status", Artist.Status)
For Each Album As Album In Artist.Albums
XMLWriter_Database.WriteStartElement("Album")
XMLWriter_Database.WriteAttributeString("Name", Album.Name)
XMLWriter_Database.WriteAttributeString("Year", Album.Year)
XMLWriter_Database.WriteAttributeString("Art", Album.Art)
XMLWriter_Database.WriteAttributeString("WikipediaWebsite", Album.WikipediaWebsite)
XMLWriter_Database.WriteAttributeString("OtherWebsite", Album.OtherWebsite)
XMLWriter_Database.WriteAttributeString("TotalCDs", Album.TotalCDs)
XMLWriter_Database.WriteAttributeString("TotalTracks", Album.TotalTracks)
XMLWriter_Database.WriteAttributeString("Status", Album.Status)
For Each Song As Song In Album.Songs
XMLWriter_Database.WriteStartElement("Song")
XMLWriter_Database.WriteAttributeString("Name", Song.Name)
XMLWriter_Database.WriteElementString("CD", Song.CD)
XMLWriter_Database.WriteElementString("Track", Song.Track)
XMLWriter_Database.WriteElementString("Lyrics", Song.Lyrics)
XMLWriter_Database.WriteElementString("Status", Song.Status)
XMLWriter_Database.WriteEndElement()
Next
XMLWriter_Database.WriteEndElement()
Next
XMLWriter_Database.WriteEndElement()
Next
XMLWriter_Database.WriteEndElement()
XMLWriter_Database.WriteEndDocument()
XMLWriter_Database.Close()
End Sub
*****************************************************************************
Information MenuItem (On Click):CODE
Private Sub MusicPerfection_Window_Information_MenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MusicPerfection_Window_Information_MenuItem.Click
Information_Form.Show()
End Sub
*****************************************************************************
Artist ListBox (On Selected Index Changed):CODE
Private Sub Artists_ListBox_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Artists_ListBox.SelectedIndexChanged
Albums_ListBox.DataSource = Private_Music(CType(Artists_ListBox.SelectedItem, Artist).Index).Albums
Information_Form.ArtistInformation_GroupBox.Visible = True
Information_Form.AlbumInformation_GroupBox.Visible = False
Information_Form.SongInformation_GroupBox.Visible = False
Information_Form.ArtistInformation_Name_Display_Label.Text = Private_Music(CType(Artists_ListBox.SelectedItem, Artist).Index).Name
Information_Form.ArtistInformation_Origin_Display_Label.Text = Private_Music(CType(Artists_ListBox.SelectedItem, Artist).Index).Origin
Information_Form.ArtistInformation_Website_Display_LinkLabel.Text = Private_Music(CType(Artists_ListBox.SelectedItem, Artist).Index).Website
Information_Form.ArtistInformation_WikipediaWebsite_Display_LinkLabel.Text = Private_Music(CType(Artists_ListBox.SelectedItem, Artist).Index).WikipediaWebsite
Information_Form.ArtistInformation_OtherWebsite_Display_LinkLabel.Text = Private_Music(CType(Artists_ListBox.SelectedItem, Artist).Index).OtherWebsite
Information_Form.ArtistInformation_Status_Display_Label.Text = Private_Music(CType(Artists_ListBox.SelectedItem, Artist).Index).Status
End Sub
*****************************************************************************
Album ListBox (On Selected Index Changed):CODE
Private Sub Albums_ListBox_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Albums_ListBox.SelectedIndexChanged
Songs_ListBox.DataSource = Private_Music(CType(Artists_ListBox.SelectedItem, Artist).Index).Albums(CType(Albums_ListBox.SelectedItem, Album).Index).Songs
Information_Form.ArtistInformation_GroupBox.Visible = False
Information_Form.AlbumInformation_GroupBox.Visible = True
Information_Form.SongInformation_GroupBox.Visible = False
Information_Form.AlbumInformation_Name_Display_Label.Text = Private_Music(CType(Artists_ListBox.SelectedItem, Artist).Index).Albums(CType(Albums_ListBox.SelectedItem, Album).Index).Name
Information_Form.AlbumInformation_Year_Display_Label.Text = Private_Music(CType(Artists_ListBox.SelectedItem, Artist).Index).Albums(CType(Albums_ListBox.SelectedItem, Album).Index).Year
Information_Form.AlbumInformation_AlbumArt_PictureBox.ImageLocation = Private_Music(CType(Artists_ListBox.SelectedItem, Artist).Index).Albums(CType(Albums_ListBox.SelectedItem, Album).Index).Art
Information_Form.AlbumInformation_WikipediaWebsite_Display_LinkLabel.Text = Private_Music(CType(Artists_ListBox.SelectedItem, Artist).Index).Albums(CType(Albums_ListBox.SelectedItem, Album).Index).WikipediaWebsite
Information_Form.AlbumInformation_OtherWebsite_Display_LinkLabel.Text = Private_Music(CType(Artists_ListBox.SelectedItem, Artist).Index).Albums(CType(Albums_ListBox.SelectedItem, Album).Index).OtherWebsite
Information_Form.AlbumInformation_Status_Display_Label.Text = Private_Music(CType(Artists_ListBox.SelectedItem, Artist).Index).Albums(CType(Albums_ListBox.SelectedItem, Album).Index).Status
End Sub
*****************************************************************************
Song ListBox (On Selected Index Changed):CODE
Private Sub Songs_ListBox_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Songs_ListBox.SelectedIndexChanged
Information_Form.ArtistInformation_GroupBox.Visible = False
Information_Form.AlbumInformation_GroupBox.Visible = False
Information_Form.SongInformation_GroupBox.Visible = True
Information_Form.SongInformation_Name_Display_Label.Text = Private_Music(CType(Artists_ListBox.SelectedItem, Artist).Index).Albums(CType(Albums_ListBox.SelectedItem, Album).Index).Songs(CType(Songs_ListBox.SelectedItem, Song).Index).Name
Information_Form.SongInformation_CD_Display_Label.Text = Private_Music(CType(Artists_ListBox.SelectedItem, Artist).Index).Albums(CType(Albums_ListBox.SelectedItem, Album).Index).Songs(CType(Songs_ListBox.SelectedItem, Song).Index).CD
Information_Form.SongInformation_Track_Display_Label.Text = Private_Music(CType(Artists_ListBox.SelectedItem, Artist).Index).Albums(CType(Albums_ListBox.SelectedItem, Album).Index).Songs(CType(Songs_ListBox.SelectedItem, Song).Index).Track
Information_Form.SongInformation_Lyrics_TextBox.Text = Private_Music(CType(Artists_ListBox.SelectedItem, Artist).Index).Albums(CType(Albums_ListBox.SelectedItem, Album).Index).Songs(CType(Songs_ListBox.SelectedItem, Song).Index).Lyrics
Information_Form.SongInformation_Status_Display_Label.Text = Private_Music(CType(Artists_ListBox.SelectedItem, Artist).Index).Albums(CType(Albums_ListBox.SelectedItem, Album).Index).Songs(CType(Songs_ListBox.SelectedItem, Song).Index).Status
End Sub
*****************************************************************************
Save Artist (On Click):CODE
Private Sub AddArtistSimple_Save_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AddArtistSimple_Save_Button.Click
Dim New_Artist As New Artist()
New_Artist.Name = AddArtistSimple_Name_TextBox.Text
New_Artist.Origin = AddArtistSimple_Origin_TextBox.Text
New_Artist.Website = AddArtistSimple_Website_TextBox.Text
New_Artist.WikipediaWebsite = AddArtistSimple_WikipediaWebsite_TextBox.Text
New_Artist.OtherWebsite = AddArtistSimple_OtherWebsite_TextBox.Text
New_Artist.Status = AddArtistSimple_Status_ComboBox.Text
Private_Music.Add(New_Artist)
[B][COLOR=YELLOW]' Getting the Artist listbox to update after the entery from the text boxes'[/COLOR][/B]
End Sub
*****************************************************************************
Classes:CODE
Public Class MusicPerfection_Classes
' Empty Class'
End Class
Class Artist
Private Private_Name As String
Private Private_Origin As String
Private Private_Website As String
Private Private_WikipediaWebsite As String
Private Private_OtherWebsite As String
Private Private_Status As String
Private Private_Index As Integer
Private Private_Albums As New List(Of Album)()
Public Property Name() As String
Get
Return Private_Name
End Get
Set(ByVal value As String)
Private_Name = value
End Set
End Property
Public Property Origin() As String
Get
Return Private_Origin
End Get
Set(ByVal value As String)
Private_Origin = value
End Set
End Property
Public Property Website() As String
Get
Return Private_Website
End Get
Set(ByVal value As String)
Private_Website = value
End Set
End Property
Public Property WikipediaWebsite() As String
Get
Return Private_WikipediaWebsite
End Get
Set(ByVal value As String)
Private_WikipediaWebsite = value
End Set
End Property
Public Property OtherWebsite() As String
Get
Return Private_OtherWebsite
End Get
Set(ByVal value As String)
Private_OtherWebsite = value
End Set
End Property
Public Property Status() As String
Get
Return Private_Status
End Get
Set(ByVal value As String)
Private_Status = value
End Set
End Property
Public Property Index() As Integer
Get
Return Private_Index
End Get
Set(ByVal value As Integer)
Private_Index = value
End Set
End Property
Public Property Albums() As List(Of Album)
Get
Return Private_Albums
End Get
Set(ByVal value As List(Of Album))
Private_Albums = value
End Set
End Property
End Class
Class Album
Private Private_Name As String
Private Private_Year As String
Private Private_Art As String
Private Private_WikipediaWebsite As String
Private Private_OtherWebsite As String
Private Private_TotalTracks As String
Private Private_TotalCDs As String
Private Private_Status As String
Private Private_Index As Integer
Private Private_Songs As New List(Of Song)()
Public Property Name() As String
Get
Return Private_Name
End Get
Set(ByVal value As String)
Private_Name = value
End Set
End Property
Public Property Year() As String
Get
Return Private_Year
End Get
Set(ByVal value As String)
Private_Year = value
End Set
End Property
Public Property Art() As String
Get
Return Private_Art
End Get
Set(ByVal value As String)
Private_Art = value
End Set
End Property
Public Property WikipediaWebsite() As String
Get
Return Private_WikipediaWebsite
End Get
Set(ByVal value As String)
Private_WikipediaWebsite = value
End Set
End Property
Public Property OtherWebsite() As String
Get
Return Private_OtherWebsite
End Get
Set(ByVal value As String)
Private_OtherWebsite = value
End Set
End Property
Public Property TotalTracks() As String
Get
Return Private_TotalTracks
End Get
Set(ByVal value As String)
Private_TotalTracks = value
End Set
End Property
Public Property TotalCDs() As String
Get
Return Private_TotalCDs
End Get
Set(ByVal value As String)
Private_TotalCDs = value
End Set
End Property
Public Property Status() As String
Get
Return Private_Status
End Get
Set(ByVal value As String)
Private_Status = value
End Set
End Property
Public Property Index() As Integer
Get
Return Private_Index
End Get
Set(ByVal value As Integer)
Private_Index = value
End Set
End Property
Public Property Songs() As List(Of Song)
Get
Return Private_Songs
End Get
Set(ByVal value As List(Of Song))
Private_Songs = value
End Set
End Property
End Class
Class Song
Private Private_Name As String
Private Private_CD As String
Private Private_Track As String
Private Private_Lyrics As String
Private Private_Status As String
Private Private_Index As Integer
Public Property Name() As String
Get
Return Private_Name
End Get
Set(ByVal value As String)
Private_Name = value
End Set
End Property
Public Property CD() As String
Get
Return Private_CD
End Get
Set(ByVal value As String)
Private_CD = value
End Set
End Property
Public Property Track() As String
Get
Return Private_Track
End Get
Set(ByVal value As String)
Private_Track = value
End Set
End Property
Public Property Lyrics() As String
Get
Return Private_Lyrics
End Get
Set(ByVal value As String)
Private_Lyrics = value
End Set
End Property
Public Property Status() As String
Get
Return Private_Status
End Get
Set(ByVal value As String)
Private_Status = value
End Set
End Property
Public Property Index() As Integer
Get
Return Private_Index
End Get
Set(ByVal value As Integer)
Private_Index = value
End Set
End Property
End Class
*****************************************************************************
Test Data:CODE
<?xml version="1.0" encoding="UTF-8"?>
<Music>
<Artist Name="A Perfect Circle" Origin="" Website="http://www.aperfectcircle.com/" WikipediaWebsite="http://en.wikipedia.org/wiki/A_Perfect_Circle" OtherWebsite="" Status="Have All">
<Album Name ="Mer de Noms" Year="2000" Art="" WikipediaWebsite="http://en.wikipedia.org/wiki/Mer_de_Noms" OtherWebsite="" TotalTracks="" TotalCDs="" Status="Have All">
<Song Name ="The Hollow">
<CD>01</CD>
<Track>01</Track>
<Genre>N/A</Genre>
<Lyrics>
Run desire run
Sexual being
Run him like a blade
To and through the heart
No conscience
One Motive
Cater to the hollow
Screaming feed me here
Fill me up again
Temporarily pacify this hungering
So grow
Libido throw
Dominoes of indiscretions down
Falling all around
In cycles
In circles
Constantly consuming
Conquer and devour
Cause it's time to bring the fire down
Bridle all this indiscretion
Long enough to edify
And permanently fill this hollow
Screaming feed me here
Fill me up again
Temporarily pacifying
Feed me here
Fill me up again
Temporarily pacifying
</Lyrics>
<Status>Have</Status>
</Song>
<Song Name ="Magdalena">
<CD>01</CD>
<Track>02</Track>
<Genre>N/A</Genre>
<Lyrics>
Overcome by your
Moving temple
Overcome by this
Holiest of altars
So pure
So rare
To witness such an earthly goddess
That I've lost my self control
Beyond compelled to throw this dollar down before your
Holiest of altars
I'd sell
My soul
My self-esteem a dollar at a time
One chance
One kiss
One taste of you my magdalena
I bear witness
To this place, this prayer, so long forgotten
So pure
So rare
To witness such an earthly goddess
That I'd sell
My soul
My self-esteem a dollar at a time
For one chance
One kiss
One taste of you my black madonna
I'd sell
My soul
My self-esteem a dollar at a time
One taste
One taste
One taste of you my Magdalena
</Lyrics>
<Status>Have</Status>
</Song>
</Album>
<Album Name ="Thirteenth Step" Year="2003" Art="" WikipediaWebsite="http://en.wikipedia.org/wiki/Thirteenth_Step" OtherWebsite="" TotalTracks="" TotalCDs="" Status="Have All">
<Song Name ="The Package">
<CD>01</CD>
<Track>01</Track>
<Genre>N/A</Genre>
<Lyrics>
Clever got me this far
Then tricky got me in
Eye on what i'm after
I don't need another friend
Smile and drop the cliche
'Till you think I'm listening
I take just what I came for
Then I'm out the door again
Peripheral on the package
Don't care to settle in
Time to feed the monster
I don't need another friend
Comfort is a mystery
Crawling out of my own skin
Just give me what I came for, then I'm out the door again
Lie to get what I came for
Lie to get just what I need
Lie to get what I crave
Lie and smile to get what's mine
Eye on what i'm after
I don't need another friend
Nod and watch your lips move
If you need me to pretend
Because clever got me this far
Then tricky got me in
I'll take just what I came for
Then I'm out the door again
Lie to get what I came for
Lie to get what I need now
Lie to get what I'm craving
Lie and smile to get what's mine
Give this to me
Mine, mine, mine
Take what's mine
Mine, mine, mine
Take what's mine
Mine, mine, mine
Lie to get what I came for
Lie to get what I need now
Lie to get what I'm craving
Lie to smile and get what's mine
Give this to me
Take what's mine
Mine, mine, mine
Take what's mine
Give this to me
Take what's mine, take what's mine, mine...
Take what's mine, take what's mine, take what's mine,
This is mine, mine, mine
</Lyrics>
<Status>Have</Status>
</Song>
</Album>
</Artist>
<Artist Name="AC/DC" Origin="" Website="http://www.acdcrocks.com/" WikipediaWebsite="http://en.wikipedia.org/wiki/AC/DC" OtherWebsite="" Status="Have All">
<Album Name ="T.N.T" Year="1975" Art="" WikipediaWebsite="http://en.wikipedia.org/wiki/T.N.T._%28album%29" OtherWebsite="" TotalTracks="" TotalCDs="" Status="Have All">
<Song Name ="It's a Long Way to the Top (If You Wanna Rock 'n' Roll)">
<CD>01</CD>
<Track>01</Track>
<Genre>N/A</Genre>
<Lyrics>
Ridin' down the highway
Goin' to a show
Stop in all the by-ways
Playin' rock 'n' roll
Gettin' robbed
Gettin' stoned
Gettin' beat up
Broken boned
Gettin' had
Gettin' took
I tell you folks
It's harder than it looks
It's a long way to the top
If you wanna rock 'n' roll
It's a long way to the top
If you wanna rock 'n' roll
If you think it's easy doin' one night stands
Try playin' in a rock roll band
It's a long way to the top
If you wanna rock 'n' roll
Hotel, motel
Make you wanna cry
Lady do the hard sell
Know the reason why
Gettin' old
Gettin' grey
Gettin' ripped off
Under-paid
Gettin' sold
Second hand
That's how it goes
Playin' in a band
It's a long way to the top
If you wanna rock 'n' roll
It's a long way to the top
If you wanna rock 'n' roll
If you wanna be a star of stage and screen
Look out it's rough and mean
It's a long way to the top
If you wanna rock 'n' roll
</Lyrics>
<Status>Have</Status>
</Song>
</Album>
</Artist>
</Music>