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}] изменена"); }