private void button1_Click(object sender, System.EventArgs e)
{
frmLogin myLo=new frmLogin ();
myLo.MdiParent=this;
myLo.Show();
}
我每按一次按钮就会显示出一个窗体,能不能就让这个窗体打开一次啊?

解决方案 »

  1.   

    那就需要定義一個全局變量,
    form2 f2;
    f2=new from2;
    這樣每次用的都是同一個窗體。
    但是有問題是,窗體關閉以後會釋放(dispose),所以下次再點顯示會出錯。
    你需要在窗體關閉時將關閉事件取消。
      

  2.   

    打开之前遍历所有的mdichild,查找子窗口标题,如果存在,就不要再打开了。
      

  3.   

    用模块 sub main 启动,在模块里面控制消息循环不是很简单可以解决吗?
      

  4.   

    你使用全局变量看看。开始的时候frmLogin  frm = null;然后在程序load的时候 frm = new frmLogin();只要判断if(frm != null) 即可。
      

  5.   

    用这个方法判断是否打开过
    bool  OpenOnce(Form frm)
    {
    foreach(Form mdifrm in this.MdiChildren)
    {
    if(frm.Text==mdifrm.Text)
    {
    mdifrm.Activate();
    return false;
    }
    }
    return true;
    }打开窗体时 调用此方法
    ModifyPass modifypass =new ModifyPass();
    if(OpenOnce(modifypass)==true)
    {
    modifypass.MdiParent=this;
    modifypass.Show();
    }