假设有好多窗体(MDI),对每一个窗体只打开一次假设
函数为GET()
有窗体B,C,D,E
如果我调用时,在B,C,D,E,的CLICK事件中直接调用GET()就可以了,
GET怎么写呢?

解决方案 »

  1.   

    你的描述不太明白.
    是不是这个意思?
    public static B b ;
    get()
    {
       if ( b==null)
         b= new B();
    }
      

  2.   

    把子窗体的构造函数都隐藏,写成singleton模式的,然后就可以了
    public class BForm : System.Windows.Form
    {
    private BForm()
    {}private static BForm bForm = null;
    public static BForm CreateInstance()
    {
     if (bForm == null)
         bForm = new BForm();
     return bForm;
    }
    }
    这样就可以用CreateInstance()方法来创建子窗体,并且保证每个窗体只有一个
      

  3.   

    二楼的,这样是可以,可每一个子窗体都必须写啊,能不能在父窗体中写一通用函数啊,比如get(form r)
    直接调用参数简单实现啊
      

  4.   

    楼主可以看一看《设计模式》这本书,其中的一个就是单件模式,也就是系统中最多只有一个它的实例class Form1
    {private static Form1 _RecordGrid = null;private static Form1 Get()
    { if (_RecordGrid == null || _RecordGrid.IsDisposed)
    {
    _RecordGrid = new frmRecordGrid();
    } return _RecordGrid; }
    }
      

  5.   

    inform frm_inform=null;
    foreach(Form f in this.MdiChildren)
    {
    if(f is inform)
    {
    frm_inform=(inform)f;
    break;
    }
    }
    if(frm_inform!=null)
    {
    frm_inform.Show();
    frm_inform.Focus();
    }
    else
    {
    frm_inform=new inform();
    frm_inform.MdiParent=this;
    frm_inform.Show();
    frm_inform.Focus();
    }