Рейтинг:
7
VJ Reddy
Я думаю Application.OpenForms
свойство может быть использовано для этой цели, как показано ниже
public bool IsFormOpen(Type formType){
foreach (Form form in Application.OpenForms)
if (form.GetType().Name == form.Name)
return true;
return false;
}
//Then to check and instantiate form1
if(!IsFormOpen(typeof (form1))
//form1 is not open
Sergey Alexandrovich Kryukov
Это решение, мой 5, но я твердо верю, что если такая проверка необходима, значит, абсолютно плохой дизайн кода. Кроме того, если форма закрыта, она не может быть открыта снова. Правильный подход-перехватить FormClosing и скрыть его вместо этого, но... это все еще плохо по сравнению с одноформным подходом (стыковка, вкладки и т. д.). и использование ужасающего MDI неприемлемо почти во всех случаях. Зачем вообще это делать?
--СА
VJ Reddy
Спасибо, СА.
и хороший совет.
Рейтинг:
16
VJ Reddy
Хороший ответ. 5!
El_Codero
ха-ха, это точно описывает ваш код. также 5 для вас!
Sergey Alexandrovich Kryukov
Это решение, мой 5, но я твердо верю, что если такая проверка необходима, значит, абсолютно плохой дизайн кода. Кроме того, если форма закрыта, она не может быть открыта снова. Правильный подход-перехватить FormClosing и скрыть его вместо этого, но... это все еще плохо по сравнению с одноформным подходом (стыковка, вкладки и т. д.). и использование ужасающего MDI неприемлемо почти во всех случаях. Зачем вообще это делать?
--СА
El_Codero
Спасибо, СА, хорошие моменты. МДИ с его поведением...это также довольно уродливо для меня.Согласитесь, tabcontrol предпочтительнее. Зачем вообще это делать?Я бы сказал, что в случае, когда несколько окон могут быть расположены в основных окнах (мониторинг), однако есть и более современные возможности ;).с уважением