日期:2014-05-20  浏览次数:20795 次

c#窗体的调用问题
private   void   menuItemAdd_Click(object   sender,   System.EventArgs   e)
{      
frmMDI1.frmForm1   form1=new   frmMDI1.frmForm1(this);
form1.Show();
}

我用这个语句从主窗口中调用子窗体,结果是点一次出来一个窗体,有什么办法只让他出来一个,再点就不再出现了.请教一下,THANKS!!!

------解决方案--------------------
private void menuItemAdd_Click(object sender, System.EventArgs e)
{
frmMDI1.frmForm1 form1=new frmMDI1.frmForm1(this);
form1.Close();
form1.Show();
}

唉,就一分!
------解决方案--------------------
frmForm1.Show();
frmForm1.WindowState = FormWindowState.Normal;
frmForm1.BringToFront();
frmForm1.Activate();
------解决方案--------------------
楼主的意思是只允许一个form1的实例吧,Show()之前先判断一下就行了

if (form1== null || form1.IsDisposed)
{
frmMDI1.frmForm1 form1=new frmMDI1.frmForm1(this);
form1.Show();
}
else
{
form1.BringToFront();
}
------解决方案--------------------
lxcnn(过客) ( ) 信誉:100 Blog
正确!

但是觉得
form1.BringToFront();
改为
form1.Active();
是不是好些:)

------解决方案--------------------
典型的单例模式
------解决方案--------------------
另一个方法:好处是没有使用成员级的变量。

foreach (Form form in this.MdiChildren)
{
if (form is frmForm1)
{
form.Activate();
return;
}
}
//这里处理如果没有正在打开
------解决方案--------------------
当打开一个窗体以后让那个按钮不可以不就行了吗
关闭以后再让它恢复