c#如何让之前出现的窗体关闭?
在一个事件中,每当此事件被触发则form2就会出现(fm2.show()),请问当再一次触发这个事件时,如何让之前的fm2先关闭?

解决方案 »

  1.   

    好像有个方法能搜到当前打开的所有窗体,你可以找找这个方法,然后关闭你的form2
      

  2.   

    frm2全局变量,每次判断它是不是null,或disposed
      

  3.   

    Application.OpenForms["原来打开的窗体名字"].Close();
    //注意主窗体不能被关闭,关闭主窗体就等于结束应用程序了。
      

  4.   

    窗体名称.Hide();隐藏就是了。
      

  5.   

    frm2全局变量,每次判断它是不是null,或disposed
    ------------------------------------------
    你好,新手上路能详细点吗
    用hide运行时没有效果
      

  6.   

    简单一点说就是 如何实现打开新fm2时,关闭旧fm2
    新手上路,希望高手们能详细一点,谢谢啦~
      

  7.   

    fm2.Close();
    Form2 fm2=new Form2();
    fm2.show();
      

  8.   

    不是给你代码了吗?你试过了吗比如你有两个窗体,Form1和Form2,Form1中有一按钮,单击此按钮
    if (Application.OpenForms["Form2"] != null)
    Application.OpenForms["Form2"].Close();
    Form2 form2 = new Form2();
    form2.Show();建议你自己动手试一下
      

  9.   


    将Form2的窗口类中声明一个静态私有变量private static Form form2;然后再其中写一个生成窗口的静态公共方法public static Form NewForm2()
            {
                if (form2 == null || form2.IsDisposed == true)
                {
                    form2 = new FormDelUser();
                }
                return form2;
            }
    最后在父窗体中声明时用Form form2=Form2.NewForm2();这样的方式创建Form2的实例,这样可以保证Form2永远只存在一个在内存中。
      

  10.   


    这个Form2的实例和正常NEW的一样操作。
      

  11.   

    这个问题标准做法:参考:http://blog.csdn.net/wuyazhe/article/details/5642431
      

  12.   

    那你还不如不要子窗体了,直接把控件放在一个Panel里面,隐藏起来。显示的时候把主窗体拉长,再把这个Panel连同控件显示出来。
      

  13.   


    哇,一回头回复已经这么多了感谢dalmeeme
    谢谢,谢谢大家的帮助