} // MainForm

        // Добавление записи в ListView по команде меню (инструментальной кнопке)
        private void mniAdd_Click(object sender, EventArgs e)
        {
            statusBar.Text = "Добавление записи...";

            // Открепляем текущее фото от пикчер-бокса
            pbxShip.Load((folderImages + Ship.fileNoPhoto));

            if (editForm == null)
            {
                editForm = new Forms.EditForm();
            }
            editForm.Text = "Добавление корабля в коллекцию";
            // при добавлении все поля ввода д.б. пустыми
            // в том числе и внутренний пикчер-бокс
            editForm.Clear();
            if (editForm.ShowDialog() != DialogResult.OK)
            {
                return;
            }

            // Прочитать данные из формы
            Ship ship = editForm.Data;

            // перед добавлением - копировать файл в папку Images проекта,
            // скорректировать имя файла - привести к формату Images\ИмяФайла
            if (!string.IsNullOrEmpty(ship.FilePhoto))
            {
                // новое имя - файл приемник
                string temp = folderImages + ship.Name + Path.GetExtension(ship.FilePhoto);
                if (!File.Exists(temp))
                {
                    addedImages.Add(temp);           // добавляем имя файла в список
                    File.Copy(ship.FilePhoto, temp); // копирование из старого места в папку Images проекта
                } // if
                ship.FilePhoto = temp;               // запомнить новое имя файла
            } // когда пользователь не выбирает фотографию новому кораблю
            else
            {
                ship.FilePhoto = (folderImages + Ship.fileNoPhoto);
            }

            ships.Add(ship);  // и, наконец-таки, добавляем корабль

            // Добавить элемент в ListView"
            // a) создать элемент - первый столбец ListView
            ListViewItem item = new ListViewItem($"{ship.Id}");

            // б) создать подэлементы - остальные столбцы
            item.SubItems.Add(ship.Name);
            item.SubItems.Add($"{ship.Displacement}");
            item.SubItems.Add($"{ship.Speed}");
            item.SubItems.Add($"{ship.CruisingRange}");

            // в) собственно добавление в ListView
            lvShips.Items.Add(item);

            statusBar.Text = "Корабль добавлен в коллекцию";

            // После добавления записи делать активной последнюю запись, которая добавлена
            lvShips.Items[lvShips.Items.Count - 1].Selected = true;

            isAddOrEdit       = true;
            mniSave.Enabled   = true;
            mniSaveAs.Enabled = true;
        } // mniAdd_Click
        }     // mniRemove_Click

        // Обработка команды - редактирование корабля в коллекции
        // (обработка меню и кнопки панели инструментов)
        // TODO: И всё таки по результатам тестирования, если провести запись
        //       и тут же попробовать изменить ей фото, то замена фото не проходит!!
        //       Не могу понять почему (?)
        private void mniEdit_Click(object sender, EventArgs e)
        {
            statusBar.Text = "Редактирование...";

            // Проверка, есть или нет выбранного элемента в списке ListView -
            // сообщить об ошибке и выйти
            if (lvShips.SelectedIndices.Count == 0)
            {
                MessageBox.Show("Корабль для редактирования не выбран", "Ошибка",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            } // if

            // Получить индекс выбранного корабля
            int index = lvShips.SelectedIndices[0];

            // Создание формы, при необходимости, настройка формы
            // а) название, соответствующее операции формы - редактированию
            // б) передать данные в форму
            if (editForm == null)
            {
                editForm = new Forms.EditForm();
            }
            editForm.Text = "Изменение (редактирование) данных корабля в коллекции";
            editForm.Data = ships[index];

            if (editForm.ShowDialog() != DialogResult.OK)
            {
                return;
            }

            // Прочитать данные из формы, записать их новые значения
            // в коллекцию кораблей, в ListView
            Ship ship = editForm.Data;

            editForm.Clear(); // Очистка полей, отсоединение от файла фотографии

            // !!! Идея работы с файлами фотографий
            // а) получаем имя файла-источника в форме редактирования
            // б) передаем в главную форму полное имя файла
            // в) в главной форме из имени файла, полученного из формы ввода (возможно,
            //    это полное имя, возмозжно - имя в папке Images) делаем
            //    имя из Images + толькоИмяФайле
            // г) проверяем, есть ли такой файл в папке Images
            //    и если его нет - копируем и заменяем имя файла источника
            //    именем файла-копии в папке Images
            // перед записью в коллекцию - копировать файл фото в папку Images проекта, если этого
            // файла еще нет в папке фотографий кораблей
            // скорректировать имя файла - привести к формату Images\ИмяФайла
            string temp = folderImages + ship.Name + Path.GetExtension(ship.FilePhoto); // новое имя - файл приемник

            if (!File.Exists(temp))
            {
                addedImages.Add(temp);           // добавляем имя файла в список
                File.Copy(ship.FilePhoto, temp); // копирование из старого места в папку Images проекта
            } // if
            ship.FilePhoto = temp;               // запомнить новое имя файла

            ships[index] = ship;                 // копируются все поля, кроме идентификатора

            // Заменить поля элемента в ListView
            // a) получить элемент index из ListView
            ListViewItem item = lvShips.Items[index];

            // б) записать новые значения столбцов
            item.SubItems[0].Text = $"{ship.Id}";
            item.SubItems[1].Text = ship.Name;
            item.SubItems[2].Text = $"{ship.Displacement}";
            item.SubItems[3].Text = $"{ship.Speed}";
            item.SubItems[4].Text = $"{ship.CruisingRange}";

            // в) собственно замена в ListView по индексу index
            lvShips.Items[index] = item;

            statusBar.Text = "Запись изменена";

            // После изменения записи делать активной запись, которая была изменена
            lvShips.Items[index].Selected = true;

            isAddOrEdit = true;
        } // mniEdit_Click