日期:2014-05-19  浏览次数:20900 次

如何判断一个窗体是否打开?急.....
我在窗体A按钮Button1上加上如下语句,实现打开B窗体
B   b=new   B(this);
if   (b   ==   null   ||   b.IsDisposed)
{
      b.Show();
}
else
{
      b.Focus();
}

现在点击Button1怎么都无法打开B窗体,请问是什么原因?

------解决方案--------------------
你采用的是什么结构MDI?
new实例时有错
------解决方案--------------------
在主窗体frmMain的初始化中定义一个公共变量(boolean)isdoing,并设置为false,
然后再添加这样的代码 
if(not isdoing)
{
ss.show();
isdoing=true;
}

在ss中的Closed事件中写上这样一个代码
frmMain.isdoing=false;
------解决方案--------------------
你可以做一个全局变量,第一次可以打开B窗口.并对全局变量赋值.在点那个按钮时判断那个全局变量.在B窗口关闭时也要修改全局变量.
------解决方案--------------------
当你new B 时,窗体就使新建的一个窗体,b==null和b.IsDisposed都是假的,所以就只执行b.Focus
,可是这时你窗体还没有show出来,所以就看不到了。试着在b.Focus前加上b.Show()试一下
------解决方案--------------------
if (f2.IsDisposed)
{
f2 = new Form2();

}
f2.Show();
------解决方案--------------------
Form2 f2 = new Form2();
private void button1_Click(object sender, EventArgs e)
{
if (f2.IsDisposed)
{
f2 = new Form2();

}
f2.Show();

}

快给我分吧

------解决方案--------------------
B b = null;

private void button1_Click(object sender, EventArgs e)
{
if (b == null || b.IsDisposed)
{
b= new B(this);
b.Show();
}
else
{
b.Active();
}
}
------解决方案--------------------
B b=new B(this);
你在这里创建了一个B的实例b,但是没有Show();此时if条件为false,走else分支,你没有Show就b.Focus();当然不会出现

你这样写if条件语句一点意义都没有,可以按我上面的方法来写
------解决方案--------------------
朝 失误了
给lxcnn(过客)吧
------解决方案--------------------
学习..