Встал вопрос, как просто и правильно реализовать передачу данных в главную форму из вспомогательной. Так как я создавал DataGridView через конструктор формы и там же привязал столбцы к данным (QA #232, QA #234), то программно добавить новую строку я не могу, к тому же, это и не требуется, т.к. имеется привязка к List<>.
На главной форме таблица, внизу кнопка Добавить, клик по которой создает новую форму. Вот эта форма: Кнопке Добавить назначено свойство DialogResult.OK, нажатие на нее должно как-то передать новую запись в List, который доступен только в главной форме.
public Record ReturnData()=>(new Record(Convert.ToInt32(tbAddId.Text), tbAddName.Text, Convert.ToDouble(tbAddMass.Text), tbAddDim.Text, tbAddMat.Text));// Метод отправки данных в любую форму
Обработчик кнопки Добавить на главной форме 1. Создаем новую форму, чтобы поля были пустыми, вызываем как диалоговое окно 2. Если в той форме происходит событие DialogResult.OK, то добавляем данные в лист через метод ReturnData(). 3. Обнуляем привязку DataSource и заново добавляем лист. Иначе не таблица остается без изменений, но в списке данные будут. 4. Удаляем форму, чтобы не засорять память.
Рис. 1. Таблица до изменений
Рис. 2. Добавляем данные
Рис. 3. Изменения в таблице Итого: новая форма никак не изменяет данные в главной форме и более того, она вообще ничего не знает о других формах (инкапсуляция). Так же не требуется вспомогательный статический класс для общих данных.