예제 #1
0
 private void Change_button_Click(object sender, EventArgs e)
 {
     if (tabControl.SelectedIndex == 0) // структура
     {
         if (StructureTable.CurrentCell == null)
         {
             UpdateInfo("Пожалуйста, выберете ячейку");
             return;
         }
         var    cell         = StructureTable.CurrentCell;
         var    row          = cell.OwningRow;
         int    rowIndex     = cell.OwningRow.Index;
         string oldName      = row.Cells[0].Value.ToString();
         string oldAuthor    = row.Cells[1].Value.ToString();
         string oldGenre     = row.Cells[2].Value.ToString();
         string oldPublisher = row.Cells[3].Value.ToString();
         int    oldYear      = int.Parse(row.Cells[4].Value.ToString());
         structureForm.ResetToDefault();
         structureForm.Name_comboBox.SelectedItem = oldName;
         structureForm.Publisher_textBox.Text     = oldPublisher;
         structureForm.Year_numeric.Value         = oldYear;
         structureForm.Text = "Изменить";
         DialogResult result  = structureForm.ShowDialog();
         bool         success = false;
         while (!success)
         {
             if (result == DialogResult.Cancel)
             {
                 return;
             }
             if (result == DialogResult.OK)
             {
                 if (structureForm.Publisher_textBox.Text == "")
                 {
                     MessageBox.Show("Пожалуйста, заполните издательство.", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Information);
                     result = structureForm.ShowDialog();
                 }
                 else if (HasIncorrectSymbols(structureForm.Publisher_textBox.Text))
                 {
                     MessageBox.Show("Обнаружен недопустимый символ.\nВ полях можно использовать буквы, цифры и знаки препинания.",
                                     "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                     result = structureForm.ShowDialog();
                 }
                 else
                 {
                     string name      = structureForm.Name_comboBox.Text;
                     string publisher = structureForm.Publisher_textBox.Text;
                     int    year      = (int)structureForm.Year_numeric.Value;
                     if (name == oldName && publisher == oldPublisher && year == oldYear)
                     {
                         UpdateInfo($"Запись [{row.Cells[0].Value}/{row.Cells[1].Value}/{row.Cells[2].Value}/{row.Cells[3].Value}/{row.Cells[4].Value}] не изменена");
                         success = true;
                         continue;
                     }
                     if (name != oldName)
                     {
                         NameTree.Remove(oldName, row);
                         NameTree.Add(name, StructureTable.Rows[rowIndex]);
                         row.Cells[0].Value = name;
                         row.Cells[1].Value = structureForm.Author_textBox.Text;
                         row.Cells[2].Value = structureForm.Genre_textBox.Text;
                     }
                     if (publisher != oldPublisher)
                     {
                         PublisherTree.Remove(oldPublisher, row);
                         PublisherTree.Add(publisher, row);
                         row.Cells[3].Value = publisher;
                     }
                     if (year != oldYear)
                     {
                         YearTree.Remove(oldYear, row);
                         YearTree.Add(year, StructureTable.Rows[rowIndex]);
                         row.Cells[4].Value = structureForm.Year_numeric.Value;
                     }
                     success = true;
                     saved   = false;
                     UpdateInfo($"Запись [{oldName}/{oldAuthor}/{oldGenre}/{oldPublisher}/{oldYear}] изменена");
                 }
             }
         }
     }
     else if (tabControl.SelectedIndex == 1) // справочник Влада
     {
         if (NameGenreTable.CurrentCell == null)
         {
             UpdateInfo("Пожалуйста, выберете ячейку");
             return;
         }
         var    row       = NameGenreTable.CurrentCell.OwningRow;
         string prevName  = NameGenreTable.CurrentCell.OwningRow.Cells[0].Value.ToString();
         string prevGenre = NameGenreTable.CurrentCell.OwningRow.Cells[1].Value.ToString();
         string name      = prevName;
         string genre     = prevGenre;
         var    form      = new NameGenreForm("Изменить");
         form.Name_textBox.Text  = name;
         form.Genre_textBox.Text = genre;
         DialogResult result  = form.ShowDialog();
         bool         success = false;
         while (!success)
         {
             if (result == DialogResult.Cancel)
             {
                 return;
             }
             if (result == DialogResult.OK)
             {
                 if (form.Name_textBox.Text == "")
                 {
                     MessageBox.Show("Пожалуйста, заполните название.", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Information);
                     result = form.ShowDialog();
                 }
                 else if (form.Genre_textBox.Text == "")
                 {
                     MessageBox.Show("Пожалуйста, заполните жанр.", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Information);
                     result = form.ShowDialog();
                 }
                 else if (HasIncorrectSymbols(form.Name_textBox.Text) || HasIncorrectSymbols(form.Genre_textBox.Text))
                 {
                     MessageBox.Show("Обнаружен недопустимый символ.\nВ полях можно использовать буквы, цифры и знаки препинания.",
                                     "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                     result = form.ShowDialog();
                 }
                 else
                 {
                     name  = form.Name_textBox.Text;
                     genre = form.Genre_textBox.Text;
                     if (prevName != name && NameGenreHT.Contains(name))
                     {
                         MessageBox.Show($"Запись с названием \"{name}\" уже находится в справочнике.",
                                         "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                         result = form.ShowDialog();
                         continue;
                     }
                     NameGenreChange(name, genre, row);
                     success = true;
                 }
             }
         }
     }
     else // справочник Полины
     {
         if (NameAuthorTable.CurrentCell == null)
         {
             UpdateInfo("Пожалуйста, выберете ячейку");
             return;
         }
         var    row        = NameAuthorTable.CurrentCell.OwningRow;
         string prevName   = NameAuthorTable.CurrentCell.OwningRow.Cells[0].Value.ToString();
         string prevAuthor = NameAuthorTable.CurrentCell.OwningRow.Cells[1].Value.ToString();
         string name       = prevName;
         string author     = prevAuthor;
         var    form       = new NameAuthorForm("Изменить");
         form.Name_textBox.Text   = name;
         form.Author_textBox.Text = author;
         DialogResult result  = form.ShowDialog();
         bool         success = false;
         while (!success)
         {
             if (result == DialogResult.Cancel)
             {
                 return;
             }
             if (result == DialogResult.OK)
             {
                 if (form.Name_textBox.Text == "")
                 {
                     MessageBox.Show("Пожалуйста, заполните название.", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Information);
                     result = form.ShowDialog();
                 }
                 else if (form.Author_textBox.Text == "")
                 {
                     MessageBox.Show("Пожалуйста, заполните автора.", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Information);
                     result = form.ShowDialog();
                 }
                 else if (HasIncorrectSymbols(form.Name_textBox.Text) || HasIncorrectSymbols(form.Author_textBox.Text))
                 {
                     MessageBox.Show("Обнаружен недопустимый символ.\nВ полях можно использовать буквы, цифры и знаки препинания.",
                                     "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                     result = form.ShowDialog();
                 }
                 else
                 {
                     name   = form.Name_textBox.Text;
                     author = form.Author_textBox.Text;
                     if (prevName != name && NameAuthorHT.Contains(name))
                     {
                         MessageBox.Show($"Запись с названием \"{name}\" уже находится в справочнике.",
                                         "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                         result = form.ShowDialog();
                         continue;
                     }
                     NameAuthorChange(name, author, row);
                     success = true;
                 }
             }
         }
     }
 }
예제 #2
0
 private void Add_button_Click(object sender, EventArgs e)
 {
     if (tabControl.SelectedIndex == 0) // структура
     {
         if (structureForm.Name_comboBox.Items.Count == 0)
         {
             MessageBox.Show("Невозможно добавить запись в структуру. Необходимо заполнить справочники.",
                             "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Information);
             return;
         }
         structureForm.ResetToDefault();
         structureForm.Text = "Добавить";
         DialogResult result = structureForm.ShowDialog();
         string       name, genre, publisher, author;
         int          year;
         bool         success = false;
         while (!success)
         {
             if (result == DialogResult.Cancel)
             {
                 return;
             }
             if (result == DialogResult.OK)
             {
                 if (structureForm.Name_comboBox.Text == "")
                 {
                     MessageBox.Show("Пожалуйста, заполните название.", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Information);
                     result = structureForm.ShowDialog();
                 }
                 else if (structureForm.Publisher_textBox.Text == "")
                 {
                     MessageBox.Show("Пожалуйста, заполните издательство.", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Information);
                     result = structureForm.ShowDialog();
                 }
                 else if (HasIncorrectSymbols(structureForm.Publisher_textBox.Text))
                 {
                     MessageBox.Show("Обнаружен недопустимый символ.\nВ полях можно использовать буквы, цифры и знаки препинания.",
                                     "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                     result = structureForm.ShowDialog();
                 }
                 else
                 {
                     name      = structureForm.Name_comboBox.Text;
                     author    = structureForm.Author_textBox.Text;
                     genre     = structureForm.Genre_textBox.Text;
                     year      = (int)structureForm.Year_numeric.Value;
                     publisher = structureForm.Publisher_textBox.Text;
                     StructureAdd(name, author, genre, publisher, year);
                     success = true;
                 }
             }
         }
     }
     else if (tabControl.SelectedIndex == 1) // справочник Влада
     {
         var          form = new NameGenreForm("Добавить");
         DialogResult result = form.ShowDialog();
         string       name, genre;
         bool         success = false;
         while (!success)
         {
             if (result == DialogResult.Cancel)
             {
                 return;
             }
             if (result == DialogResult.OK)
             {
                 if (form.Name_textBox.Text == "")
                 {
                     MessageBox.Show("Пожалуйста, заполните название.", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Information);
                     result = form.ShowDialog();
                 }
                 else if (form.Genre_textBox.Text == "")
                 {
                     MessageBox.Show("Пожалуйста, заполните жанр.", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Information);
                     result = form.ShowDialog();
                 }
                 else if (HasIncorrectSymbols(form.Name_textBox.Text) || HasIncorrectSymbols(form.Genre_textBox.Text))
                 {
                     MessageBox.Show("Обнаружен недопустимый символ.\nВ полях можно использовать буквы, цифры и знаки препинания.",
                                     "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                     result = form.ShowDialog();
                 }
                 else
                 {
                     name  = form.Name_textBox.Text;
                     genre = form.Genre_textBox.Text;
                     if (NameGenreHT.Contains(name))
                     {
                         MessageBox.Show($"Запись с именем \"{name}\" уже находится в справочнике.",
                                         "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                         result = form.ShowDialog();
                         continue;
                     }
                     NameGenreAdd(name, genre);
                     success = true;
                 }
             }
         }
     }
     else  // справочник Полины
     {
         var          form = new NameAuthorForm("Добавить");
         DialogResult result = form.ShowDialog();
         string       name, author;
         bool         success = false;
         while (!success)
         {
             if (result == DialogResult.Cancel)
             {
                 return;
             }
             if (result == DialogResult.OK)
             {
                 if (form.Name_textBox.Text == "")
                 {
                     MessageBox.Show("Пожалуйста, заполните название", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Information);
                     result = form.ShowDialog();
                 }
                 else if (form.Author_textBox.Text == "")
                 {
                     MessageBox.Show("Пожалуйста, заполните автора", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Information);
                     result = form.ShowDialog();
                 }
                 else if (HasIncorrectSymbols(form.Name_textBox.Text) || HasIncorrectSymbols(form.Author_textBox.Text))
                 {
                     MessageBox.Show("Обнаружен недопустимый символ.\nВ полях можно использовать буквы, цифры и знаки препинания.",
                                     "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                     result = form.ShowDialog();
                 }
                 else
                 {
                     name   = form.Name_textBox.Text;
                     author = form.Author_textBox.Text;
                     if (NameAuthorHT.Contains(name))
                     {
                         MessageBox.Show($"Запись с именем \"{name}\" уже находится в справочнике.",
                                         "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                         result = form.ShowDialog();
                         continue;
                     }
                     NameAuthorAdd(name, author);
                     success = true;
                 }
             }
         }
     }
 }