Exemple #1
0
        private void NameGenreChange(string name, string genre, DataGridViewRow row)
        {
            string oldName         = row.Cells[0].Value.ToString();
            string oldGenre        = row.Cells[1].Value.ToString();
            bool   confirmedChange = false;

            if (name == oldName && genre == oldGenre)
            {
                UpdateInfo($"Запись [{oldName}/{oldGenre}] не изменена");
                return;
            }
            if (genre != oldGenre) // изменен жанр
            {
                var rowsToChange = NameTree.GetValues(oldName);
                if (rowsToChange.Size != 0)
                {
                    DialogResult result = MessageBox.Show($"Изменение затронет другие справочники. Продолжить?",
                                                          "Предупреждение", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
                    if (result == DialogResult.No)
                    {
                        UpdateInfo($"Запись [{oldName}/{oldGenre}] не изменена");
                        return;
                    }
                    confirmedChange = true;
                }
                foreach (var rowToChange in rowsToChange)
                {
                    rowToChange.Key.Cells[2].Value = genre;
                }
                row.Cells[1].Value = genre;
            }
            if (name != oldName) // изменено название
            {
                var rowsToChange = NameTree.GetValues(oldName);
                if (NameAuthorHT.Contains(oldName))
                {
                    if (!confirmedChange)
                    {
                        DialogResult result = MessageBox.Show($"Изменение затронет другие справочники. Продолжить?",
                                                              "Предупреждение", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
                        if (result == DialogResult.No)
                        {
                            UpdateInfo($"Запись [{oldName}/{oldGenre}] не изменена");
                            return;
                        }
                    }
                    var rowInNameAuthor = NameAuthorHT.GetValue(oldName);
                    NameAuthorHT.Delete(oldName);
                    rowInNameAuthor.Cells[0].Value = name;
                    NameAuthorHT.Add(name, rowInNameAuthor);
                    NameAuthorHT.Delete(oldName);
                    NameAuthorHT.Add(name, row);
                    int nameIndexInStructureForm = structureForm.Name_comboBox.Items.IndexOf(oldName);
                    structureForm.Name_comboBox.Items.RemoveAt(nameIndexInStructureForm);
                    structureForm.Name_comboBox.Items.Insert(nameIndexInStructureForm, name);
                    if (rowsToChange.Size != 0)
                    {
                        NameTree.RemoveKey(oldName);
                        foreach (var rowToChange in rowsToChange)
                        {
                            rowToChange.Key.Cells[0].Value = name;
                            NameTree.Add(name, rowToChange.Key);
                        }
                    }
                }
                else
                {
                    if (NameAuthorHT.Contains(name))
                    {
                        structureForm.Name_comboBox.Items.Add(name);
                    }
                }
                NameGenreHT.Delete(oldName);
                row.Cells[0].Value = name;
                NameGenreHT.Add(name, row);
            }
            UpdateInfo($"Запись [{oldName}/{oldGenre}] изменена");
        }