子窗体 Name Text
校历子窗体 Form_xiaoli 校历管理程序1. 添加静态变量,用来判断子窗体是否已打开。public static bool bXiaoliIsOpen=false;2.为主菜单项添加事件代码如下:public void tsmiXiaoli_Click( object sender,EventArgs e)
{
OpenFormXiaoli();
}priave void OpenFormXiaoli()
{
if( !bXiaoliIsOpen)
{
Form_Xiaoli frmXiaoli= new Form_Xiaoli();
frmXiaoli.mdiParent=this;
frmXiaoli.show();
}
}
上面的代码是防止在主窗体中打开多个校历子窗体 可是问题来了当关了编译器 再重新运行时 在主窗体中就打不开校历子窗体了 因为bXiaoliIsOpen变成Ture了。我本来是想在主窗体中只能打开一个校历子窗体 且重新运行后 再能打开校历子窗体
有没有高手可以帮忙解决这个问题(本人非常感激)
另外其实用 Application.OpenForms["Form_xiaoli"] != null 就能判断是否已经打开了。
1)如1楼所说设置bXiaoliIsOpen属性
2)可以不加bXiaoliIsOpen这个变量,设置tsmiXiaoli按钮的enabled的属性,创建窗体后设置为false,close窗体后设置为true
using System;namespace WFDT.MT {
public class MT_ManageTableBizCtrlImpl {
private ManageTableForm tblForm; public MT_ManageTableBizCtrlImpl() { }
public void ShowManageTableFrm() {
if (null == tblForm || tblForm.IsDisposed) {
tblForm = new ManageTableForm();
tblForm.Show();
} else {
tblForm.Activate();
}
}
}
}
在Form_Closed、Form_Closing中关闭窗体时恢复
bXiaoliIsOpen=false;
public ManageTableForm{
privata static ManageTableForm instance;
private ManageTableForm(){}
public static ManangeTableForm Instance{
if(instance==null){
instance=new ManageTableForm();
}
return instance;
}
}