初学C#,今天做一个很简单的程序,出现如下问题.
新建了两个窗体,在from1窗体中实例化一个form2窗体,而后我想通过form2窗体中的一个按钮来同时完成关闭这两个窗体.
具体代码如下:
form1 代码
namespace WMsystem
{
    public partial class start : Form
    {        public start()
        {
            InitializeComponent();
        }
        private void start_Load(object sender, EventArgs e)
        {
            yanzheng f = new yanzheng(this);
            f.Show();
        }    }
}
form2代码
namespace WMsystem
{
    public partial class yanzheng : Form
    {
        public yanzheng( start f2)
        {
            InitializeComponent(); //在这个里面f2能用,但到下面就不能用了.很是不懂!        }        private void qxbutton_Click(object sender, EventArgs e)
        {            this.Close();
            f3.Close();  //想在这个地方同时关闭两个窗体.
        }        private void yanzheng_Load(object sender, EventArgs e)
        {
           
        }    }
}
请高手帮忙指点一下,超郁闷!

解决方案 »

  1.   

    public start f3;
    f3=f2;
      

  2.   


     private void qxbutton_Click(object sender, EventArgs e)
      {
      f3.Close(); //想在这个地方同时关闭两个窗体.
      this.Close();
      }
    这样呢?
      

  3.   

    1.如果想关闭整个程序,直接在CLICK里写Application.Exit();
    2.如果想要关闭某一些窗体,按照你代码的思维逻辑,可以这样写(红字为修改或添加)  private start _f2;        public yanzheng()
            {
                InitializeComponent();
            }        public yanzheng(start f2)
            {
                InitializeComponent(); //在这个里面f2能用,但到下面就不能用了.很是不懂!
                _f2 = f2;        }        private void yanzheng_Load(object sender, EventArgs e)
            {        }        private void qxbutton_Click(object sender, EventArgs e)
            {
                this.Close();
                _f2.Close(); //想在这个地方同时关闭两个窗体.
            }3.线程控制某些窗体的特定操作
      

  4.   

    把所有的窗体放进一个List<Form>里
    属性里放上不同的关联属性
    想关几个关几个
      

  5.   


    using(form2 frm=new form2())
    {
        frm.ShowDialog();
        this.Close();
    }
      

  6.   

    当然你也可以List<这里写Form的基类或接口>
      

  7.   

    你说的那种情况,第二个窗体做一个父窗体指定就可以了
    Show()方法不是有个带参的重载嘛
      

  8.   

     private Form f;
     public yanzheng( start f2)
      {
     f= f2;
      InitializeComponent(); //在这个里面f2能用,但到下面就不能用了.很是不懂!  }
    应该定义一个全局变量,这样就可以在其他地方用f来控制了。private void qxbutton_Click(object sender, EventArgs e)
      {  this.Close();
      //f3.Close(); //想在这个地方同时关闭两个窗体.
      }
    在添加个关闭事件,在关闭事件里调用
    private void formclosing(object sender, EventArgs e)
      {
         f3.Close(); //想在这个地方同时关闭两个窗体.
      }
      

  9.   

    public event childclose closefather;
         private void Form1_Closed(object sender, System.EventArgs e)
         {
           //用事件去关闭主窗口
            closefather();
          }
    public delegate void childclose();
    委托实现
      

  10.   

    private void qxbutton_Click(object sender, EventArgs e)
      {  this.Close();
    //在这new一个f3的对象让这个对象调用  对象名.hide();试一试
      f3.Close(); //想在这个地方同时关闭两个窗体.
      }
      

  11.   

    ls 都行吧,,,application.exit();
      

  12.   

    按钮 的时候关闭自己
    自己的closing事件中关闭自己打开的那个窗体
    如果涉及的窗体比较多建议做一个窗体列表。List<form>
    来实现关闭
      

  13.   

    Application.Exit();   直接关闭你的应用程序!