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

来源:百度知道 编辑:UC知道 时间:2024/05/31 08:02:38
在form1里面有按钮1 Form2 f = new Form2();f.show();
怎样在点击按钮1后判断是否Form2是否已经存在,如果不存在就新建一个,如果已经打开了一个Form2子窗口,就把该子窗口调到最前面,并激活窗口
还有的是怎样把Form2绑定在Form1上面,让它不能移出Form1,就像Winrar解压的那个窗口一样
补充一下,你们的不行,我打开Form2然后关闭,就再打不开了;
二楼的我改了一下,就可以了
Form2 f2 = null;
private void button2_Click(object sender, EventArgs e)
{
if (f2 == null)///如果f2为空,第一次肯定为空
{
f2 = new Form2();///让f2引用f
f2.Show();///弹出这个窗口
}
else///如果这个窗口已经存在
{
try
{
f2.Show();
f2.Activate();///激活显示
}
catch (Exception)//如果窗口已关闭
{
f2 = new Form2();
f2.Show();
}
}

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();///激活显示
}
}

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();
}

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

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

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