private void listTracks_KeyDown(object sender, KeyEventArgs e) { // Was delete key pressed? if (e.KeyCode == Keys.Delete) { // Is there anything selected? if (listTracks.SelectedItems.Count > 0) { // Compose message var msgText = "Delete "; msgText += (listTracks.SelectedItems.Count == 1) ? ((TrackInfo)listTracks.SelectedItems[0].Tag).Name : listTracks.SelectedItems.Count + " Tracks"; msgText += "?"; // Ask user if (MessageBox.Show(this, msgText, @"Confirm Delete", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == DialogResult.OK) { // Fire before change notification BeforeChange?.Invoke(this, null); // Remove items var itemsToRemove = listTracks.SelectedItems.Cast <ListViewItem>().ToList(); foreach (var item in itemsToRemove) { listTracks.Items.Remove(item); m_Tracks.Remove(item.Tag as TrackInfo); } // Fire tracks change notification TracksRemoved?.Invoke(this, null); } } e.Handled = true; } }
internal void OnTracksRemoved(TracksRemovedEventArgs e) { TracksRemoved.RaiseEvent(this, e); }