예제 #1
0
        private void UpdateSong(SongCollectionEventArgs.ChangeType type, Song changedSong)
        {
            SuspendLayout();
            System.Windows.Forms.Control[] ctrls;
            switch (type)
            {
            case SongCollectionEventArgs.ChangeType.Add:
                AddSongControls(changedSong);
                break;

            case SongCollectionEventArgs.ChangeType.Clear:
                foreach (System.Windows.Forms.Control ctrl in panel.Controls)
                {
                    CleanSongControls(ctrl);
                }
                panel.Controls.Clear();
                LoadSongs();
                break;

            case SongCollectionEventArgs.ChangeType.Remove:
                ctrls = new System.Windows.Forms.Control[panel.Controls.Count];
                panel.Controls.CopyTo(ctrls, 0);
                List <System.Windows.Forms.Control> controllist = new List <System.Windows.Forms.Control>(ctrls);
                CleanSongControls(controllist.Find((System.Windows.Forms.Control control) =>
                {
                    SongControl songControl = control as SongControl;
                    return(songControl.Song == changedSong);
                }));
                break;
            }
            ResumeLayout();
        }
예제 #2
0
        private void AddSongControls(Song song)
        {
            var sc = new SongControl();

            sc.LoadSong(song);
            panel.Controls.Add(sc);

            sc.SongDoubleClicked += Sc_SongDoubleClicked;
        }