private void removeRomEntryToolStripMenuItem_Click(object sender, EventArgs e)
        {
            try
            {
                if (dataGridView.SelectedRows.Count == 0)
                {
                    return;
                }

                List <Rom> roms = new List <Rom>();

                foreach (DataGridViewRow row in dataGridView.SelectedRows)
                {
                    if (!row.Visible)
                    {
                        continue;
                    }

                    roms.Add((Rom)row.Tag);
                }

                var message = string.Empty;

                if (roms.Count == 1)
                {
                    message = string.Format("Do you want to remove \"{0}\" ? (Keep the rom file)", roms[0].Name);
                }
                else
                {
                    message = string.Format("Do you want to remove {0} roms ? (Keep the rom files)", roms.Count);
                }

                var result = MessageBox.Show(message, "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

                if (result.ToString() == "No")
                {
                    return;
                }

                foreach (var rom in roms)
                {
                    RomFunctions.RemoveRomPics(rom);
                    FilteredRoms.Remove(rom);
                }

                RomBusiness.DeleteRom(roms);

                foreach (DataGridViewRow row in dataGridView.SelectedRows)
                {
                    dataGridView.Rows.Remove(row);
                }

                labelTotalRomsCount.Text = FilteredRoms.Count.ToString();
            }
            catch (Exception ex)
            {
                FormCustomMessage.ShowError(ex.Message);
            }
        }
        private void FilterRoms(Filter filter = null)
        {
            if (updating)
            {
                return;
            }

            FilteredRoms.Clear();
            //DateTime begin = DateTime.Now;

            if (filter == null)
            {
                filter             = new Filter();
                filter.text        = textBoxFilter.Text;
                filter.platform    = comboBoxPlatform.Text;
                filter.label       = comboBoxLabels.Text;
                filter.genre       = comboBoxGenre.Text;
                filter.publisher   = comboBoxPublisher.Text;
                filter.developer   = comboBoxDeveloper.Text;
                filter.year        = comboBoxYearReleased.Text;
                filter.status      = comboBoxStatus.Text;
                filter.favorite    = checkBoxFavorite.Checked;
                filter.text        = filter.text.ToLower();
                filter.textType    = comboBoxFilter.Text;
                filter.arcade      = checkBoxArcade.Checked;
                filter.console     = checkBoxConsole.Checked;
                filter.handheld    = checkBoxHandheld.Checked;
                filter.cd          = checkBoxCD.Checked;
                filter.romfile     = dataGridView.SelectedRows.Count == 0 ? "" : ((Rom)dataGridView.SelectedRows[0].Tag).Name;
                filter.romplatform = dataGridView.SelectedRows.Count == 0 ? "" : ((Rom)dataGridView.SelectedRows[0].Tag).Platform.Name;
            }

            dataGridView.SuspendLayout();
            Thread.BeginCriticalRegion();

            FilteredRoms = FilterFunctions.FilterRoms(filter);

            Thread.EndCriticalRegion();
            dataGridView.ResumeLayout();
            //DateTime end = DateTime.Now;
            AddRomsToGrid(FilteredRoms);
            //FormCustomMessage.Show((end - begin).ToString());
        }
        private void deleteRomToolStripMenuItem_Click(object sender, EventArgs e)
        {
            try
            {
                if (dataGridView.SelectedRows.Count == 0)
                {
                    return;
                }

                DataGridViewRow row = dataGridView.SelectedRows[0];
                Rom             rom = (Rom)row.Tag;

                var message = string.Format("Do you want to remove \"{0}\" ? (Remove to recycle bin)", rom.Name);

                var result = MessageBox.Show(message, "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

                if (result.ToString() == "No")
                {
                    return;
                }

                Microsoft.VisualBasic.FileIO.FileSystem.DeleteFile(rom.Platform.DefaultRomPath + "\\" + rom.FileName,
                                                                   Microsoft.VisualBasic.FileIO.UIOption.AllDialogs,
                                                                   Microsoft.VisualBasic.FileIO.RecycleOption.SendToRecycleBin);

                dataGridView.Rows.Remove(row);
                RomBusiness.DeleteRom(rom);
                RomFunctions.RemoveRomPics(rom);
                FilteredRoms.Remove(rom);
                labelTotalRomsCount.Text = FilteredRoms.Count.ToString();
            }
            catch (OperationCanceledException ioex)
            {
                return;
            }
            catch (Exception ex)
            {
                FormCustomMessage.ShowError(ex.Message);
            }
        }
 private void dataGridView_KeyDown(object sender, KeyEventArgs e)
 {
     try
     {
         if (e.KeyData == Keys.Space)
         {
             dataGridView_DoubleClick(sender, e);
         }
         else if (e.KeyData == Keys.Delete)
         {
             removeRomEntryToolStripMenuItem_Click(sender, e);
         }
         else if (e.KeyData == Keys.F5)
         {
             FilteredRoms.Clear();
             FilteredRoms.AddRange(RomBusiness.GetAll());
             AddRomsToGrid(FilteredRoms);
         }
         else if (e.KeyData == Keys.G)
         {
             changeGenreToolStripMenuItem_Click(sender, null);
         }
         else if (e.KeyData == Keys.L)
         {
             changeLabelsToolStripMenuItem_Click(sender, null);
         }
     }
     catch (OperationCanceledException ioex)
     {
         return;
     }
     catch (Exception ex)
     {
         FormCustomMessage.ShowError(ex.Message);
     }
 }