主窗体弹出一个模式窗体,上面有两个按钮:上一步,下一步。点击下一步之后弹出另外一个模式窗体,上面还是有两个按钮:上一步,下一步。但是如果一直这样点下去的话,所有的窗体都累加到这了,我明明在弹出另外一个模式窗体的时候close了这个窗体了,可是却没有close掉,导致后面窗体一个个都累加到这了。。我最开始用代码手动close()窗体:
         private void button2_Click(object sender, EventArgs e)
        {
            ProcessHelp2 help = new ProcessHelp2();
            help.ShowDialog();
            this.Close();
        } 
设了断点看了,close()已经走到了,为什么就是不关呢。我又改成这样:
private void button2_Click(object sender, EventArgs e)
        {
            ProcessHelp2 help = new ProcessHelp2();
            this.Close();
            help.ShowDialog(); 
        }  
反正都一样,就是所有的窗体都累计到那了。请大侠们帮忙解决下啊,小弟在线等待!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

解决方案 »

  1.   

    private void button2_Click(object sender, EventArgs e) 
            { 
                ProcessHelp2 help = new ProcessHelp2(); 
    if(help.ShowDialog()==DialogResult.OK)
                this.Close(); 
                 
            }  
      

  2.   

    hide 不行的  一样   我试了的啊哥们!!
      

  3.   

    象上一\下一步这样的功能窗体,可以在一个窗体上实现的啊.
    如果真要按你的实现
     Form2 frm = new Form2();
     frm.Show();foreach (Form f in Application.OpenForms)
    {
       if ((f is Form1))
       {
          f.Hide();
          break;
       }
      

  4.   

    把help.ShowDialog(); 方法
    换为help.Show(); 就可以了
    help.ShowDialog(); 方法会把该窗体累计显示出来。
      

  5.   

    private void button2_Click(object sender, EventArgs e) 
    {
      Hide(); 
      ProcessHelp2 help = new ProcessHelp2(); 
      help.ShowDialog(); 
    }
      

  6.   

    不能用showdialog(), 改用show().         public Form2(Form parentForm)
            {
                InitializeComponent();
                this.parentForm = parentForm;
            }        private Form parentForm = null;
            private void button1_Click(object sender, EventArgs e)
            {
                Form2 form2 = new Form2(parentForm);
                
                form2.Show(form2.parentForm);
                form2.Location = this.Location;
                
                this.Close();
            }
    简单处理,会闪烁
      

  7.   

    public Form1()
            {
                InitializeComponent();
            }        private void button1_Click(object sender, EventArgs e)
            {
                Form2 form2 = new Form2(this);
                form2.Show(this);
            }
      

  8.   

    不过show的话就不是模式窗口了。最好的方法还是把这几个窗口做到TabControl里,一个一个显示。
      

  9.   

    Exactly!showdialog(showdialog(showdialog(......))))))))...  StackOverFlow
      

  10.   

    在另一个类中定义一个变量 如 int a=0;private void button2_Click(object sender, EventArgs e) 
            { 
                a=1;
              this.close();
            }
    在main中写
    if(类名.a==1)
    {
      application.Run(new form2())
    }
    这样就ok了
    我建议你别用hide 这样容易导致计算机变慢
      

  11.   

    问题可以这样解决:

    private void button2_Click(object sender, EventArgs e) 
            { 
                ProcessHelp2 help = new ProcessHelp2(); 
                help.ShowDialog(); 
                this.Close(); 
            } 
    中的help.ShowDialog(); 改为help.Show();就可以了
      

  12.   

    private void button2_Click(object sender, EventArgs e) 
            { 
                ProcessHelp2 help = new ProcessHelp2(); 
                help.Show(); 
                this.Close(); 
            } 
    恩  今天 我也碰到了  找到老师 解决的
      

  13.   

    你是不是理解错了,你应该用一个 主窗体放好上一步/下一步,然后在这个窗体弹出或加载其他内容,上一步下一步的时候Hide掉,这样回退速度快,内容也在,而不是一步Close又Open主窗体放好一个Panel,上一步,下一步,关闭.每一步你可以用个UserContrl放置,然后用Panel.Add加载,用Hide和Show控制.