winForm里面为什么点一个按纽的时构造一个Form实例,并调用show方法显示出来,.再点的话会再显示一个新的(构造一个.) 
有什么办法只让它出来一个,怎么点都只出来一个,如果点的时候那一个是打开的,就成为活动窗体!!!

解决方案 »

  1.   

    你可以自己控制要不要再创建实例:
    if(sn==null)
    sn=new sonwin();
    sn.Show();
    要定义:
    private sonwin sn=null;
      

  2.   

    我用的办法:假设主窗口A,新打开的窗口是B。点完让B弹出,然后按钮变灰。关闭B时,让B发一个消息给A,A把按钮变亮。
      

  3.   

    面向对象拉
    NEW 的时候创建了一个新实例可以用单例模式
    public static Form1 singleForm=null;     //单例模式 public static Form1 getInstance()
    { if(singleForm==null || singleForm.IsDisposed)
    { singleForm=new Form1(); } return singleForm; }
      

  4.   

    Form2 fm2 = new Form2();
    this.Hide();
    fm2.Show();
    this.Show();
      

  5.   

    用回复人: fellowcheng(头都编大了)的方法!
      

  6.   

    支持  fellowcheng(头都编大了) ,我也受用了
      

  7.   

    在FormA中定义:
    public FormB frmb=null;
    public Button bOpen;
    bOpen_Click(...)
    {
    if(frmb==null)//反正后面bOpen.Enable=false的这判断不要也行
    {
    frmb=new FormB();
    frmb.frma=this;
    frmb.Show();
    bOpen.Enable=false;
    }
    }
    -----------------------------
    在FormB中定义:
    public FormA frma;
    在OnClosing事件中加入:
    if(frma!=null)
    frma.bOpen.Enable=true;
      

  8.   

    楼主,可以这样(设你要找开的窗体叫frmChild)
    public class frmMain : Form
    {
    //1)定义全局变量
    private frmChild frm = null;private void Button1_Click(object sender, EventArgs e)
    {
     if (frm == null)
    {
    frm = new frmChild();
    frm.Show();
    }
    else
    {
    frm.BringToFront();
    }
    }}