日期:2014-05-17  浏览次数:20970 次

编写多窗体程序的时候遇到几个纠结的问题求指教
本人编写一个多窗体的程序,其中的一段如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Form2 form2 = new Form2();
            form2.Show();
            
        }
    }
}
遇到个问题:
当产生form2的时候依然可以看见原先的form窗体,于是加了一句this.Hide();这样开始的窗体是没有了但是关闭form2窗体时,整个程序竟然还在编译。
我希望能通过当前窗口进入form2窗口,并且还能从form2窗口返回到form1窗口,这个该怎么做呢?

------解决方案--------------------
把Form1 传过去 
 private void button1_Click(object sender, EventArgs e)
        {
            Form2 form2 = new Form2();
            form2.Show(this);
            
        }
//****Form2中 声明一个Form1 变量
Form1 form1;

form1=(Form1)this.ower;
然后就可以对form1进行相关操作了...
//我是新手..可能想法不好...相互交流哈
------解决方案--------------------
登录窗体切换:http://www.aiiq.net/?p=1444
------解决方案--------------------
在新打开的子窗体中的(FormCloseed)关闭事件中,写上Application.Exit();
------解决方案--------------------
如果你希望Form2关闭的时候退出程序,就在Form2的FormClosing事件里加入Application.Exit();注册事件你应该会的吧。

如果你希望关闭Form2的时候再显示Form1,就在Form2的FormClosing事件里加入form1.show(),但是这个前提是要把form1通过构造函数传递过来,把Form2的构造函数改成有参数的。
Form2里这样写:
private Form1 form1;
Form2(Form form1)
{
 this.form1=form1;
 ...
}
Form1里这样写:
this.Hide();
Form2 form2=new Form2(this);
form2.Show();