我如何检查窗体是否在c# windows应用程序中打开

本文关键字:windows 应用程序 是否 窗体 何检查 检查 | 更新日期: 2023-09-27 18:11:55

我想为这个计划写一个简单的c# windows应用程序:
当表单加载定时器启动时,检查并显示任何另一个表单,我有两个表单,表单1启动定时器1和定时器1启动表单2与此代码:

ShowALARM frm = new ShowALARM();
frm.Show();
frm.listBox1.Items.Add(x);


用计时器方法调用代码,用每个调用那个代码,打开新的窗体!,我想检查,看看是否形式是开放的,但是,如果false,然后运行新的形式。

我如何检查窗体是否在c# windows应用程序中打开

您可以使用代码Application.OpenForms获得所有打开的表单。要找到特定的形式是开放的,您可以执行Application.OpenForms.OfType<Form1>().Any(),其中From1是您正在寻找的形式。

一条建议-不要写这样的代码:frm.listBox1.Items.Add(x);,因为你正在打破SoC(关注点分离)。一种形式不应该知道太多其他形式。更好的方法是在目标表单上创建一个方法,如AddItem(object x),并从其他表单调用它。

代码示例:

protected void TimerTickMethod()
{
   if (!IsShowALARMFormOpened())
   {
      ShowALARM frm = new ShowALARM();
      frm.Show();
   }
}
protected bool IsShowALARMFormOpened()
{
    return Application.OpenForms.OfType<ShowALARM>().Any();
}