rt

解决方案 »

  1.   

    No, window cannot kill its father~
      

  2.   

    可以啊
    在frm1里写frm2.show在frm2里写frm1.close当然frm2也会跟着一起关闭不知道是不是你想要的
      

  3.   

    父窗口(Form2 ):
                 Form3 frm = new Form3();
                frm.Owner = this;
                frm.Show();子窗口(Form3 ):
               Form2 frm = (Form2)this.Owner;
                frm.Close();
    这样子窗口也会关掉
      

  4.   


      private void button_Click(object sender, EventArgs e)
            {
                Form form = new Form();
                form.FormClosed += delegate { this.Close(); };
                form.ShowDialog();
            }这样就可以了.
      

  5.   

    你是想一次性关闭两个窗体是这个意思吗?
    可以在父窗体中加一个Timer  ,Timer事件中加入 this.hide(); 
    在关闭子窗体的时候,启动父窗体的timer或者可以这样。父窗体的实例化变量form1设为公共,子窗体关闭直接form1.hide();
    那么了窗体也会跟着关闭,这样就只需关一次。(我想你这里的父窗体下面肯定还有一个主窗体,如果不是,在子窗体直接结束程序更快.)
      

  6.   


    这个方法不行,f.MdiParent = this;才会把子窗体加在父窗体中
      

  7.   

     public Form1()
            {
                InitializeComponent();
            }        private void button1_Click(object sender, EventArgs e)
            {
                Form2 frm2 = new Form2();
                frm2.Show(this);//或 frm2.ShowDialog(this);
            }
        }    public partial class Form2 : Form
        {
            public Form2()
            {
                InitializeComponent();
            }        private void button2_Click(object sender, EventArgs e)
            {
                Form1 frm1 = (Form1)this.Owner;
                this.Hide();
            }
      

  8.   

    public event childclose closefather;
         private void Form1_Closed(object sender, System.EventArgs e)
         {
            closefather();
          }
    父窗口
         public delegate void childclose();
    子窗体:   Form1 ff=new Form1();
       ff.closefather+=new childclose(this.closethis); 
        ff.Show();     public void closethis()
        {
         this.Close();
         }
      

  9.   

    form1Form2 form =new Form();
    form.ShowDialog();
    this.Close();
      

  10.   

    父窗体进入子窗体的时候传下父窗体的this参数,子窗体写个带参构造函数,然后就可以关父窗体了,不过子窗体会同时关闭
      

  11.   

    在子窗体closing事件里写Application.Exit();
      

  12.   

    很简单,父窗体打开子窗体的时候,用showdialog方法而不用show方法,然后在父窗体中去判断子窗体的返回结果,像这样:
    if(child_from.showdialog()==DialogResult.OK)
    {
    this.close();
    }
      

  13.   

    很简单,父窗体打开子窗体的时候,用showdialog方法而不用show方法,然后在父窗体中去判断子窗体的返回结果,像这样:
    if(child_from.showdialog()==DialogResult.OK)
    {
    this.close();
    }
      

  14.   

    两种方法,一种是将父窗体当做参数传给子窗体,当然子窗体的构造函数必须有父窗体这个参数...
    一种是调用this.ParentForm.Close()
      

  15.   

    那你把frm.Owner = this;改成frm.MdiParent = this;然后  Form2 frm = (Form2)this.MdiParent; frm.Close();就行了或者隐藏父窗口Hide(),子窗口关闭的时候用Application.Exit();
      

  16.   

    我换了方法,直接用这个了Application.Exit();
      

  17.   

    举个例子:Login(父窗体)登录成功后,进入HomePage。
    this.Visible = false;
    HomePage main = new HomePage();
    main.LoginForm = this;
    main.Show();在main里写一个
    private Login _loginForm;
            public Login LoginForm
            {
                get 
                { 
                    return _loginForm; 
                }
                set 
                { 
                    _loginForm = value; 
                }
            }
    当Homepage里写一段,
    private void HomePage_FormClosing(object sender, FormClosingEventArgs e)
            {
                if (MessageBox.Show("确定退出吗?", "消息来自主界面",MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.Cancel)
                {
                    e.Cancel = true;
                }
                else 
                {
                    this.LoginForm.Close();
                }               
            }
    这样就可以实现了关闭程序啦