2013-11-21 5 views
1

Мое приложение запускает немодальное диалоговое окно при нажатии кнопки. Если пользователь снова нажимает на эту кнопку, я хотел бы проверить, если эта форма уже запущена, и задаться вопросом, возможно ли это?Как проверить, не запущено ли немодальное диалоговое окно

ответ

3

Вы можете использовать Application.OpenForms Property

if (Application.OpenForms.OfType<YourNonModalFormType>().Any()) 
    // one is already opened 

Если вы хотите, чтобы закрыть эту форму:

var form = Application.OpenForms.OfType<YourNonModalFormType>().FirstOrDefault(); 
if (form != null) 
{ 
    // launched 
    form.Close(); 
} 
+0

Благодарю. Если он уже запущен, могу ли я закрыть его таким образом? –

+0

@PaulSnow без проблем, обновлено –

+0

На самом деле я использую .net 3.5. Похоже, он не может быть использован в моем коде. Любые другие способы сделать это? –

0

Другой подход заключается вручную объявить переменную для отслеживания формы экземпляра:

public partial class Form1 : Form 
{ 

    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private Form2 f2 = null; 

    private void button1_Click(object sender, EventArgs e) 
    { 
     if (f2 == null || f2.IsDisposed) 
     { 
      f2 = new Form2(); 
      f2.Show(); 
     } 
     else 
     { 
      f2.Close(); 
     } 
    } 

} 

 Смежные вопросы

  • Нет связанных вопросов^_^