我想为这个计划写一个简单的c#windows应用程序:
当表格加载计时器启动,检查并显示任何其他表格时,我有两种形式,形成一个启动计时器1和计时器1启动表格2,使用此代码:
ShowALARM frm = new ShowALARM();
frm.Show();
frm.listBox1.Items.Add(x);
使用计时器方法调用代码,每次调用代码,打开新表单!,我想检查表单是否打开,但是,如果为false则运行新表单。我可以解决吗?谢谢。
答案 0 :(得分:1)
您可以使用代码Application.OpenForms
获取所有打开的表单。要查找特定表单,您可以执行Application.OpenForms.OfType<Form1>().Any()
From1
,其中frm.listBox1.Items.Add(x);
是您正在寻找的表单。
一条建议 - 不要写这样的代码:AddItem(object x)
因为你正在打破SoC(关注点分离)。一种形式不应该对其他形式有太多了解。更好的方法是在目标表单上创建一个方法,如protected void TimerTickMethod()
{
if (!IsShowALARMFormOpened())
{
ShowALARM frm = new ShowALARM();
frm.Show();
}
}
protected bool IsShowALARMFormOpened()
{
return Application.OpenForms.OfType<ShowALARM>().Any();
}
,并从其他表单中调用它。
代码示例:
onClick