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

如何在子窗体里 关闭另一个子窗体
本帖最后由 wang_maosen 于 2013-04-17 10:45:32 编辑
进入一个主窗体From1,然后弹出 Form2 和Form3 。

如何Form2 里的关闭Form3窗体?



求源码源码 源码 源码 源码  不要思路。

源代码

------解决方案--------------------
在Form1中定义Form3和Form2的对象,重载Form2的构造函数,函数里加一个Form3类型参数
Form1中:
Form3 form3= new Form3()
Form2 form2= new Form2(form3)
Form2中:定义Form3类型变量
Form3 newform=null;
重载构造函数:
public Form2(Form3 pform)
{
  newform=pform;
}
通过下面2句话可以在Form2中控制Form3的显示或关闭
 newform.Show();
 newform.Close();
------解决方案--------------------
 Form2 fo2 = new Form2();
        Form3 fo3 = new Form3();
        public Form1()
        {
            InitializeComponent();
        }

        void Form1_Click(object sender, EventArgs e)
        {
            //fo3.Close();//这里关闭了form3就不能再显示,可以用隐藏
            fo3.Hide();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            fo2.Controls["button1"].Click += Form1_Click;//根据名字查找form2上的按钮
            fo2.Show();
            fo3.Show();
        }

------解决方案--------------------
是啊,只不过把代码在form1里边写着呢,你可以挪到form2里边啊。

就是在form1里边实例化一个form2,然后找到form2的按钮,在写click的事件,在事件里边吧form3关闭。

你把代码执行一下就知道了!
------解决方案--------------------
form2里关闭form3

foreach(Form frm in this.MdiParent.MdiChildren)
{
     if(frm is Form3)
    {
        frm.Close();
    }
}

------解决方案--------------------
form2里打开form3
Form3 frm=new Form3();
frm.MdiParent=this.MdiParent;
frm.Show();

------解决方案--------------------
foreach (Form form in Application.OpenForms)
            {
                if (form.Name== "Form2")
                {
                    form.Close();
                    break;