在winform中,我目前有2个窗体(form1,form2),在form1中一个button1按钮实件中,我要打开form2窗体同时隐藏form1,代码如下:
{
            form2 js = new form2();
            js.Show();
            this.Hide();
}
这个时候form2打开了,我在form2中的一个关闭窗体实践中,要退出form2重新回到form1中,代码如下:
private void form2_FormClosed(object sender, FormClosedEventArgs e)
        {
            Form1 f = new Form1();
            f.Show();
           
        }
这个时候问题就出现了,发现在右下角的托盘图标一下又显示了2个一摸一样的,请问我该如何处理!谢谢!

解决方案 »

  1.   

    static form2 js = new form2(); 
    在winform中,我目前有2个窗体(form1,form2),在form1中一个button1按钮实件中,我要打开form2窗体同时隐藏form1,代码如下: 

                           js.Show(); 
                this.Hide(); 

    static Form1 f = new Form1(); 这个时候form2打开了,我在form2中的一个关闭窗体实践中,要退出form2重新回到form1中,代码如下: 
    private void form2_FormClosed(object sender, FormClosedEventArgs e) 
            { 
                           f.Show(); 
              
            } 
      

  2.   

    因为你有new了一个form1所以会有出现一个 一开始那一个你只是隐藏了 并没有关闭
      

  3.   

    你可以手动的控制一下,在你的Form2出现后将notifyIcon的Visable=False 
    然后再Form1出现的时候将Visable=True你看看行不?
      

  4.   

    如果是想在form1中有一些操作  
    然后点击按钮打开form2 
    等form2操作完回到form1 
    form1的原先操作保持的话 不要用new form1(); 
    因为这样会重新生成一个form1,将所有的咚咚初始化。
    可以这样        private void Form2_FormClosed(object sender, FormClosedEventArgs e)
            {
                Application.OpenForms["Form1"].Show() ;     // 既然先前Hidden了,那么就要用Show了     
            }
    当然要是就是想重新new的话 那就没必要Hidden了。
      

  5.   

    在Program里面定义一个静态Form1... 噢 6楼的方法好些
      

  6.   

    6楼正解
    要调出被Hidden()的窗体
    只需要把它重新Show()出来就可以了,而不要再new,因为你每new一个都会生成一个Form
    最好的做法:Application.OpenForms["Form1"].Show() ;
    顶了
      

  7.   

    楼上的static方法不好用  因为是两个窗体我在form1中写了 public static form1 f=new form1();
    这个在form1中好用。但是我在form2中用form1.f.show();根本不好用!弹不出窗体来!