У меня большинство форм создаются программно. При нажатии на кнопку "открыть окно", оно создаётся с нуля. После завершения работы в окне, по нажатию на крестик [Х], оно уничтожается, я там пишу MyForm = null; и сборщик мусора потом затирает его из памяти. Не знаю затирает ли он и кнопки которые тоже создавались через new; Когда мне снова нужно вызвать уничтоженное окно кнопкой, я его снова создаю. Всё это происходит быстро, утечек в памяти не заметил и вроде как успокоился на этом. Но правильно ли я делаю? Может быть после первого создания окна, его больше не уничтожать, а скрывать visible = false; Но тогда мне каждый раз при смене языка придется перебирать контролы в каждом уже созданном окне и присваивать в их кнопочки, лейблы, таблицы, чекбоксы, текстбоксы и т.д. в поля Text новые данные из массивов Languages.Array[n];
Что то туплю, почему данный код у меня открывает сколько угодно вторую форму раз if(Application.OpenForms["Form2"]==null) new Form2().Show(); с linq работает.