// Загрузить массив из файла public void OpenFile(string filename) { if (!File.Exists(filename)) { throw new Exception("Файл не существует"); } if (FilmFile.Count != 0) { DeleteAllRows(); } using (StreamReader sw = new StreamReader(filename)) { while (!sw.EndOfStream) { string str = sw.ReadLine(); string[] dataFromFile = str.Split(new String[] { "|" }, StringSplitOptions.RemoveEmptyEntries); ushort id = (ushort)Convert.ToInt32(dataFromFile[0]); string title = dataFromFile[1]; string genre = dataFromFile[2]; string director = dataFromFile[3]; ushort year = (ushort)Convert.ToInt32(dataFromFile[4]); string country = dataFromFile[5]; string language = dataFromFile[6]; FilmRow filmRow = new FilmRow(id, title, genre, director, year, country, language); AddRow(filmRow); } } }
int IComparer.Compare(object x, object y) { FilmRow filmRow1 = (FilmRow)x; FilmRow filmRow2 = (FilmRow)y; return((m_direction == SortDirection.Ascending) ? filmRow1.YearRelease.CompareTo(filmRow2.YearRelease) : filmRow2.YearRelease.CompareTo(filmRow1.YearRelease)); }
// Изменить год фильма public void EditYearRelease(ushort year, int index) { FilmRow film = (FilmRow)FilmFile[index]; if ((year < 1895) || (year > (DateTime.Now.Year) + 10)) { throw new Exception("Год премьеры должен быть не раньше 1895 и не позднее " + (DateTime.Now.Year) + 10); } film.YearRelease = year; }
//Нажали на ячейку/строку private void dataGrid_CellClick(object sender, DataGridViewCellEventArgs e) { try { int indRow = dataGrid.Rows[e.RowIndex].Index; FilmRow _film = (FilmRow)data.FilmFile[indRow]; CellClick_TextBoxInfo(_film); } catch { } }
//И данные из строки поместились в поля на форме private void CellClick_TextBoxInfo(FilmRow film) { button_AddRow_Click(button_AddRow, null); textBox_ID.Text = film.FilmID.ToString(); textBox_Title.Text = film.FilmTitle; comboBox_Genre.Text = film.FilmGenre; textBox_Director.Text = film.FilmDirector; textBox_Year.Text = film.YearRelease.ToString(); textBox_Country.Text = film.FilmCountry; textBox_Language.Text = film.FilmLanguage; TextBoxsDisabled(); }
//Добавить новую запись в базу private void button_Add_Click(object sender, EventArgs e) { try { FilmID = textBox_ID.Text = generateID().ToString(); FilmTitle = textBox_Title.Text; FilmGenre = comboBox_Genre.Text; FilmDirector = textBox_Director.Text; YearRelease = textBox_Year.Text; FilmCountry = textBox_Country.Text; FilmLanguage = textBox_Language.Text; FilmRow film = new FilmRow( (ushort)Convert.ToInt32(textBox_ID.Text), textBox_Title.Text, comboBox_Genre.Text, textBox_Director.Text, (ushort)Convert.ToInt32(textBox_Year.Text), textBox_Country.Text, textBox_Language.Text); data.AddRow(film); int n = data.FilmFile.Count; FilmRow film1 = (FilmRow)data.FilmFile[n - 1]; dataGrid.Rows.Add (film1.FilmID, textBox_Title.Text, comboBox_Genre.Text, textBox_Director.Text, textBox_Year.Text, textBox_Country.Text, textBox_Language.Text); BanChangeColumn(n - 1); TextBoxsClear(); if ((!timer1.Enabled) && (filename != "")) { timer1.Enabled = true; timer1.Start(); } } catch (Exception ex) { MessageBox.Show($"Ошибка: {ex.Message}"); } }
private void button_Add_Click(object sender, EventArgs e) { try { MainForm MF = new MainForm(); this.Owner = MF; MF.FilmTitle = textBox_Title.Text; MF.FilmGenre = comboBox_Genre.Text; MF.FilmDirector = textBox_Director.Text; MF.FilmCountry = textBox_Country.Text; MF.FilmLanguage = textBox_Language.Text; MF.YearRelease = textBox_Year.Text; FilmRow film = new FilmRow( (ushort)Convert.ToInt32(textBox_ID.Text), textBox_Title.Text, comboBox_Genre.Text, textBox_Director.Text, (ushort)Convert.ToInt32(textBox_Year.Text), textBox_Country.Text, textBox_Language.Text); MF.data.AddRow(film); int n = MF.data.FilmFile.Count; FilmRow film1 = (FilmRow)MF.data.FilmFile[n - 1]; MF.dataGrid.Rows.Add(film1.FilmID, textBox_Title.Text, comboBox_Genre.Text, textBox_Director.Text, textBox_Year.Text, textBox_Country.Text, textBox_Language.Text); MF.BanChangeColumn(n - 1); if ((!MF.timer1.Enabled) && (MF.filename != "")) { MF.timer1.Enabled = true; MF.timer1.Start(); } this.Close(); } catch (Exception ex) { MessageBox.Show($"Ошибка: {ex.Message}"); } }
//Записать базу в таблицу private void WriteToDataGrid() { try { for (int i = 0; i < data.FilmFile.Count; i++) { FilmRow film = (FilmRow)data.FilmFile[i]; dataGrid.Rows.Add( film.FilmID, film.FilmTitle, film.FilmGenre, film.FilmDirector, film.YearRelease, film.FilmCountry, film.FilmLanguage); BanChangeColumn(i); } } catch (Exception ex) { MessageBox.Show($"Ошибка: {ex.Message}"); } }
// Изменить язык фильма public void EditFilmLanguage(string language, int index) { FilmRow film = (FilmRow)FilmFile[index]; film.FilmLanguage = language; }
// Изменить страну фильма public void EditFilmCountry(string country, int index) { FilmRow film = (FilmRow)FilmFile[index]; film.FilmCountry = country; }
// Изменить режисёра фильма public void EditFilmDirector(string director, int index) { FilmRow film = (FilmRow)FilmFile[index]; film.FilmDirector = director; }
// Изменить жанр фильма public void EditFilmGenre(string genre, int index) { FilmRow film = (FilmRow)FilmFile[index]; film.FilmGenre = genre; }
// Изменить название фильма public void EditFilmTitle(string title, int index) { FilmRow film = (FilmRow)FilmFile[index]; film.FilmTitle = title; }
// Добавить новую строку в файл public void AddRow(FilmRow filmRow) { FilmFile.Add(filmRow); }
// Поиск совпадений по базе, и получение ID всех найденных записей // Возвращает -1, если совпадений не найдено public List <int> SearchRows(string query) { List <int> count = new List <int>(); //Проверяются ID и год премьеры if (ushort.TryParse(query, out ushort num_query)) { for (int i = 0; i < FilmFile.Count; i++) { FilmRow filmRow = (FilmRow)FilmFile[i]; if (filmRow.FilmID == num_query) { count.Add(i); break; // Если нашли запись по уникальному ID, то закончить поиск } else { if (filmRow.YearRelease == num_query) { count.Add(i); } } } if (count.Count == 0) { count.Add(-1); } return(count); } // Поиск по текстовым полям записи query = query.ToLower(); // перевод в нижний регистр query = query.Replace(" ", ""); for (int i = 0; i < FilmFile.Count; i++) { FilmRow filmRow = (FilmRow)FilmFile[i]; if (filmRow.FilmTitle.ToLower().Replace(" ", "").Contains(query)) { count.Add(i); } else if (filmRow.FilmGenre.ToLower().Replace(" ", "").Contains(query)) { count.Add(i); } else if (filmRow.FilmDirector.ToLower().Replace(" ", "").Contains(query)) { count.Add(i); } else if (filmRow.FilmCountry.ToLower().Replace(" ", "").Contains(query)) { count.Add(i); } else if (filmRow.FilmLanguage.ToLower().Replace(" ", "").Contains(query)) { count.Add(i); } } if (count.Count == 0) { count.Add(-1); } return(count); }