Убедитесь, что у вас полностью удалены все ссылки на форму. Иногда может случиться, что у вас есть какие-то скрытые ссылки, которые вы не заметили.
Например: если вы присоединяете к внешним событиям из своего диалога, то есть к событиям внешнего окна, если вы забудете отсоединить их, у вас будет оставшаяся ссылка на форму, которая никогда не исчезнет.
Попробуйте этот код в своем диалоге (пример плохого кода ...):
protected override void OnLoad(EventArgs e)
{
Application.OpenForms[0].Activated += new EventHandler(Form2_Activated);
base.OnLoad(e);
}
void Form2_Activated(object sender, EventArgs e)
{
Console.WriteLine("Activated!");
}
И многократно открывая и закрывая диалоговое окно, вы увидите, что количество строк в консоли увеличивается для каждого вызова. Это означает, что форма остается в памяти, даже если вы вызвали ее для удаления (это следует использовать только для освобождения неуправляемых ресурсов, т. Е. Закрытия файла и тому подобного).