应用程序窗体都会有最小化,最大化,和关闭
如果在form1跳转到form2
使用的方法是隐藏form1 显示form2的话,按form2的关闭图标(就是右上角的那个交叉按钮)只能关闭form2,不能把应用程序整个关闭,如果我想要关闭任意一个form的都可以实现关闭整个程序要如何写,另外的话,如果按那个关闭键,需要弹出一个提示框,提示确认关闭和返回程序,又该如何写,希望各位大侠们能帮助我!!!
谢谢!!!

解决方案 »

  1.   

    只要首先实例化一个窗体,然后用实例化的窗体点要转换到的窗体就行了。OK?
    Form1 form =new Form1
    form.
      

  2.   

    form1作为主窗体, 关闭form2的话就不会退出程序了;
    如果你要实现form2也可以关闭程序则在form1中监听form2的FormClose事件,判断一下是否需要退出程序,如果需要则关闭form1即可;
    如果form1是主窗口,form1的关闭会直接导致程序关闭.
      

  3.   

    你隐藏了Form1,在关闭From2后其实Form1仍在后台运行,所以下次运行时会报“当前程序正在被另一个进程使用...”错,其实解决办法很简单,就是在那两个窗体关闭的关闭事件中写一行代码,关闭当前所有进程即可:
    //Form1窗体关闭事件
            private void Form1_FormClosing(object sender, FormClosingEventArgs e)
            {
                Application.ExitThread();//关闭该线程上的所有窗体
            }
    ]//Form2窗体关闭事件
            private void Form2_FormClosing(object sender, FormClosingEventArgs e)
            {
                Application.ExitThread();//关闭该线程上的所有窗体
            }这样做就不会发生你遇到的情况了
      

  4.   

    1.如果在Form1的窗体上添加一个跳转至Form2的按钮
    2.然后双击该按钮,在它的单击事件中添加这些代码
    3.Form2 form2 = new Form2();
    form2.show();
    即可实现从窗体1跳转至窗体2
    4.关闭窗体的方法:
    (1)this.Close();
    (2)Application.Exit();
    (3)this.Dispos(); 
      

  5.   

    to 4楼
    如果需要弹出关闭提示,是否在关闭事件里面添加messagebox呢?
      

  6.   

    是啊.
    dialogresult result= messagebox.show("是否关闭","系统提示",messageboxbutton.yesorno,messageboxicon.information);
    if(result==dialogresult.yes)
    {
    ....
    }
      

  7.   

    if(MessageBox.Show("确定要关闭吗","提示",MessageBoxButtons.OKCancel)==DialogResult.OK)
    {
      Application.exit()
    }
    else
    {
     不做任何处理
    }
      

  8.   

    在想要关闭的窗体的FormClosing事件中写代码!
            private void Form1_FormClosing(object sender, FormClosingEventArgs e) 
            { 
                if(MessageBox.Show("确定要关闭吗","提示",MessageBoxButtons.OKCancel)==DialogResult.OK) 

      Application.exit() 
    }         } 
    这样就OK啦
      

  9.   

    不好意思,重新整理一下哈:
    private void Form1_FormClosing(object sender, FormClosingEventArgs e) 

       if(MessageBox.Show("确定要关闭吗","提示",MessageBoxButtons.YesNo)==DialogResult.No) 
        { 
          e.Cancel = true;//取消关闭
        } 
      

  10.   

    Form2 form=new Form2();//如果有参数的话可以在括号里写
    form.show();
    要全部推出就添加一个closing事件就行了
      

  11.   

    1.继承form,自己实现,之后都调用自己的form。
    2.form.closing (event)
      

  12.   

    form 1 fomr 2做成单态,
    然后当关或者最小化form 1 的时候,用form2.show()实现form2的打开,在form2初始化的时候写form1.display == false。
    分别给两个窗口添加closing时间,用Application.exit() ,就可以了
      

  13.   

    to 16楼
    错误 1 “System.Windows.Forms.FormClosedEventArgs”并不包含“cancle”的定义
    如果用e.cancle=true;的话,会出现上面的错误,是什么原因呢??
      

  14.   

    需要两步:
    一. 要添加Form2_FormClosing事件,在添加此方法之前首先要在Form2的初始化(initialization)中注册此事件
    this.FormClosing +=          //具体代码我打不出来,vs会提示的二. Form.cs中的代码(手打的,难免有拼写错误):
    private void Form2_FormClosing(object sender, FormClosingEventArgs e) 

      if(MessageBox.Show("您即将退出系统,您确定吗?","您确定关闭本窗体吗?",MessageBoxButtons.YesNo,MessageBoxIcon.Question)==DialogResult.Yes) 

      Application.exit() 

    else 

      e.Cancel;
    }
    }
      

  15.   

     private void Form1_FormClosing(object sender, FormClosingEventArgs e)
            {
                if (MessageBox.Show("是否关闭", "系统提示", MessageBoxButtons.YesNo) == DialogResult.Yes)
                {
                    return;
                }
                else
                    e.Cancel = true;
           
            }
      

  16.   

    还行吧如从form1 form=new form1();
             form.Show();
      

  17.   

    #5楼 得分:5回复于:2009-03-14 18:05:011.如果在Form1的窗体上添加一个跳转至Form2的按钮
    2.然后双击该按钮,在它的单击事件中添加这些代码
    3.Form2 form2 = new Form2();
    form2.show();
    即可实现从窗体1跳转至窗体2
    4.关闭窗体这个很好!以前经常这样干
      

  18.   

    这个有问题吧。在询问是否退出后,调用application.exit。而application.exit有会调用所有form的formclosing方法。那么又会弹出messagebox继续询问,而后才能退出,显然这是不行的。
    参考MSDN如下:Exit 方法停止在所有线程上运行的所有消息循环,并关闭应用程序的所有窗口。 该方法并不强制退出该应用程序。Exit 方法通常从一个消息循环内调用,该方法强制 Run 返回。 若要只退出当前线程的某个消息循环,请调用 ExitThread。 Exit 引发下列事件并执行关联的条件操作: 为 OpenForms 属性表示的各个窗体引发 FormClosing 事件。 可以通过将这些窗体的 FormClosingEventArgs 参数的 Cancel 属性设置为 true,取消此事件。 如果多个处理程序的其中之一取消该事件,则 Exit 将返回而无进一步操作。 否则,将为每个打开的窗体引发 FormClosed 事件,然后关闭所有正在运行的消息循环和窗体。