【程序设计】c#怎样判断当前子窗口已经打开

2024-12-16 01:57:52
推荐回答(4个)
回答1:

Form2 f2 = null;///定义一个Form2的引用,一开始让他为空
private void 1_Click(object sender,EventArg e)///你的按钮
{
if(f2 == null)///如果f2为空,第一次肯定为空
{
Form2 f = new Form2();///实例一个f
f2 = f;///让f2引用f
f.Show();///弹出这个窗口
}
else///如果这个窗口已经存在
{
f2.Activate();///激活显示
}
}

回答2:

太多办法了。
灵活点应用。
设一个session

打开子窗口肯定会执行一个OPEN的动作是吧。这时候就把session改成1(原本可设置成0)
然后就判断这个session不就可以了。

回答3:

namespace WindowsApplication1
{
public partial class Form2 : Form
{
static Form2 f = null;
private Form2()
{
InitializeComponent();
}

public static Form2 getForm2()
{
if (f == null)
f = new Form2();
return f;
}

private void Form2_Load(object sender, EventArgs e)
{

}
}
}
///////////////////////////////////
namespace WindowsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
}

private void Form1_Load(object sender, EventArgs e)
{

Form2 f = Form2.getForm2();
f.ShowDialog();
}
}
}
经测试完全好用。

回答4:

bool Opened = false;
foreach (Form frm in Application.OpenForms)
{
if (frm.Name == f.Name)
{
frm.Activate();
frm.BringToFront();
Opened = true;
break;
}
}

if (!Opened)
{
f.Show();
}