Мое окончательное решение состояло в том, чтобы создать два метода для привязки и последующего повторного связывания данных:
private void bind()
{
object dataSource = db.Projects.OrderBy(p => p.ProjectNo);
projectNoTextBox.DataBindings.Add("Text", dataSource, "ProjectNo");
projectNameTextBox.DataBindings.Add("Text", dataSource, "ProjectName");
//etc.
}
private void rebind()
{
projectNoTextBox.DataBindings.Clear();
projectNameTextBox.DataBindings.Clear();
//etc.
bind();
}
В методе загрузки формы я связывал данные, а затем, после того как пользователь создал или удалил проект, я перепривязал данные.
Мой опыт работы с привязкой данных .Net заключается в том, что это большой запутанный черный ящик. Я думаю, что если бы я полностью понял это, это сэкономило бы мне очень много времени - в конце концов, когда бы я ни узнал что-то новое о привязке данных, длина моего кода GUI уменьшается вдвое! Однако я часто не понимаю, почему я получаю какое-то странное поведение. Даже с этим ... Держу пари, есть более простой способ сделать это.