有两form 
formA为主窗体并有一个btn
formB也有一个btn程序运行时直接关闭A程序会自动退出但是当点击A的btn隐蔽A并show()B,
再点击B的btn 隐蔽B show()A时现在关闭A程序不会自动退出
求解以及相应问题的延伸知识点代码:    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }        private void button1_Click(object sender, EventArgs e)
        {
            this.Hide();
            new Form2().Show();
        }
    }    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }        private void button2_Click(object sender, EventArgs e)
        {
            new Form1().Show();
            this.Close(); // 已经释放掉B
            this.Dispose();
        }
    } 

解决方案 »

  1.   

    private void button2_Click(object sender, EventArgs e)
      {
      new Form1().Show();
      this.Close(); // 已经释放掉B
      this.Dispose();
      }
      }  不应该在使用new Form1().Show();
    这样又新建了一个form1,最后却没有退出。
      

  2.   

    如果不强行调用exit() winform 程序退出的条件是什么
      

  3.   

     要做到恢复A时关闭A
    要怎么写属性
    ParentForm
    Parent的作用是什么
      

  4.   

    点击A的button时,你只是hide了A这个Form,我们暂且叫它A1,之后B Form show了出来,单击B上的button,B close掉,同时重新构造了一个Form1的对象show出来,我们叫它A2吧,那么现在整个程序实际上是有两个Form1对象,一个是A1,一个是A2,并且A1是hide住的,是我们program类中static class Program
        {
            /// <summary>
            /// The main entry point for the application.
            /// </summary>
            [STAThread]
            static void Main()
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new Form1());
            }
        }这个new Form1的对象,因此,当你关闭A2时,程序不会退出,只能将A1关闭才能退出整个应用程序的。如果你是想让B关闭时原来的A show出来,有但不限于下面两种办法
    1. 使用事件public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }        private void button1_Click(object sender, EventArgs e)
            {
                this.Hide();
                Form2 b = new Form2();
                b.Show();
                b.FormClosed += new FormClosedEventHandler(b_FormClosed);
            }        void b_FormClosed(object sender, FormClosedEventArgs e)
            {
                this.Show();
            }
        }
    public partial class Form2 : Form
        {
            public Form2()
            {
                InitializeComponent();
            }        private void button2_Click(object sender, EventArgs e)
            {
                this.Close(); // 已经释放掉B
                this.Dispose();
            }
        }  
    2.设置Form1为Form2的构造函数参数public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }        private void button1_Click(object sender, EventArgs e)
            {
                this.Hide();
                Form2 b = new Form2(this);
                b.Show();
            }
        }    public partial class Form2 : Form
        {
            public Form2(Form1 parent)
            {
                InitializeComponent();
                m_Parent = parent;
            }        private Form1 m_Parent;        private void button2_Click(object sender, EventArgs e)
            {
                m_Parent.Show();
                this.Close(); // 已经释放掉B
                this.Dispose();
            }
        }