C#, C/S, winfrom    //点击菜单打开from窗口后,再次点击该菜单,又会打开该from,这样就会打开很多相同的from,
    //怎么才可以避免一个from 被多次重复打开??
    //当再次点击菜单时,如果该窗口已经打开,怎样将窗口置为最前端显示 ??        private void ToolStripMenuItem01_Click(object sender, EventArgs e)
        {
            frmbclass from = new frmbclass();
            from.Show();
        }
初学C#,
请各位高手详细说明,谢谢

解决方案 »

  1.   


    在窗体中加入如下代码
    private static 窗体 instance = null;
    //添加一个属性
    public static 窗体 Instance
    {
         set{
         }
         get{
             if(instance == null){
                 new 窗体();
             }
             return instance;
         }
    }
    在窗体的构造函数中加入如下代码
    instance = this;
    创建窗体Closed事件
    private void 窗体_FormClosed(object sender, FormClosedEventArgs e)
    {
        instance = null;
    }使用方法:
    在要调用该窗体的地方加入如下代码
    窗体 myfrm = 窗体.Instance; 
    myfrm.Show();
    myfrm.Activate();
      

  2.   

    private void button1_Click(object sender, System.EventArgs e) 

        if( childForm == null || childForm.IsDisposed ) 
        { //第一次实例化或实例化窗体被关了,都要重新实例化 
             childForm = new ChildForm(); 
             childForm.MdiParent = this;          childForm.Show(); //显示    }
      

  3.   

    窗体做单例模式。Instance属性中判断是否关闭或没打开。
      

  4.   

     
    private void ToolStripMenuItem01_Click(object sender, EventArgs e)
            {
    foreach(Form frm in Application.OpenForms)
    {
    if(frm is frmbclass)
    {
    frm.Activate();
    frm..WindowState = FormWindowState.Normal;
    return;
    }
    }
                frmbclass from = new frmbclass();
                from.Show();
            }
      

  5.   

    if (shipCompu == null || shipCompu.IsDisposed)
                {
                    shipCompu = new ShipCompu();
                    shipCompu.Show();
                }
                else
                {
                    shipCompu.Activate();
                    IntPtr i = WinHs.GetForegroundWindow();
                    if (WinHs.IsIconic(i))
                    {
                        WinHs.ShowWindowAsync(i, SW_RESTORE);
                    }
                    else
                    {
                        WinHs.ShowWindowAsync(i, SW_SHOWNORMAL);
                    }
                } 
      

  6.   

    可以参考:
    http://www.hhxue.com/ncre/two/c/fudao/200811/65236.html
      

  7.   


                Form frm = Application.OpenForms["Form1"];
                if (frm != null)
                {
                    frm .Show();
                }
                else
                {
                    Form1 F1 = new Form1();
                    F1.Show();
                }