Мое приложение запускает немодальное диалоговое окно при нажатии кнопки. Если пользователь снова нажимает на эту кнопку, я хотел бы проверить, если эта форма уже запущена, и задаться вопросом, возможно ли это?Как проверить, не запущено ли немодальное диалоговое окно
1
A
ответ
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
Другой подход заключается вручную объявить переменную для отслеживания формы экземпляра:
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();
}
}
}
Благодарю. Если он уже запущен, могу ли я закрыть его таким образом? –
@PaulSnow без проблем, обновлено –
На самом деле я использую .net 3.5. Похоже, он не может быть использован в моем коде. Любые другие способы сделать это? –