如何在子窗体里 关闭另一个子窗体

时间:2022-08-30 22:53:16
进入一个主窗体From1,然后弹出 Form2 和Form3 。

如何Form2 里的关闭Form3窗体?



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

11 个解决方案

#1


在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();

#2


 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();
        }

#3


引用 2 楼 porenasckx 的回复:
C/C++ code?12345678910111213141516171819 Form2 fo2 = new Form2();        Form3 fo3 = new Form3();        public Form1()        {            InitializeComponent();        }         void Fo……


是在F02里面关闭For3  

#4


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

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

你把代码执行一下就知道了!

#5


form2里关闭form3

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

#6


引用 1 楼 zcj860904 的回复:
在Form1中定义Form3和Form2的对象,重载Form2的构造函数,函数里加一个Form3类型参数
Form1中:
Form3 form3= new Form3()
Form2 form2= new Form2(form3)
Form2中:定义Form3类型变量
Form3 newform=null;
重载构造函数:
public Form2(Form……


这个少代码吧!我按照你写的 不行。

#7


form2里打开form3
Form3 frm=new Form3();
frm.MdiParent=this.MdiParent;
frm.Show();

#8


引用 5 楼 gxingmin 的回复:
form2里关闭form3

C# code?1234567foreach(Form frm in this.MdiParent.MdiChildren){     if(frm is Form3)    {        frm.Close();    }}

不是父子窗体。

只是从Form1 弹出来的。

#9


讲一下我的问题吧。

一个主窗体FrmManInfo,主窗体上面有2个按钮 一个是 FrmConfig系统配置  另一个是FrmAuto自动下载定时。

登录后,进入FrmManInfo,然后点击按钮 【系统配置】,弹出窗体FrmConfig,在配置保存的时候,如果保存失败。则自动关闭 FrmAuto窗体。

#10


该回复于2013-04-17 14:06:49被管理员删除

#11


foreach (Form form in Application.OpenForms)
            {
                if (form.Name== "Form2")
                {
                    form.Close();
                    break;
                }
            }

#1


在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();

#2


 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();
        }

#3


引用 2 楼 porenasckx 的回复:
C/C++ code?12345678910111213141516171819 Form2 fo2 = new Form2();        Form3 fo3 = new Form3();        public Form1()        {            InitializeComponent();        }         void Fo……


是在F02里面关闭For3  

#4


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

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

你把代码执行一下就知道了!

#5


form2里关闭form3

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

#6


引用 1 楼 zcj860904 的回复:
在Form1中定义Form3和Form2的对象,重载Form2的构造函数,函数里加一个Form3类型参数
Form1中:
Form3 form3= new Form3()
Form2 form2= new Form2(form3)
Form2中:定义Form3类型变量
Form3 newform=null;
重载构造函数:
public Form2(Form……


这个少代码吧!我按照你写的 不行。

#7


form2里打开form3
Form3 frm=new Form3();
frm.MdiParent=this.MdiParent;
frm.Show();

#8


引用 5 楼 gxingmin 的回复:
form2里关闭form3

C# code?1234567foreach(Form frm in this.MdiParent.MdiChildren){     if(frm is Form3)    {        frm.Close();    }}

不是父子窗体。

只是从Form1 弹出来的。

#9


讲一下我的问题吧。

一个主窗体FrmManInfo,主窗体上面有2个按钮 一个是 FrmConfig系统配置  另一个是FrmAuto自动下载定时。

登录后,进入FrmManInfo,然后点击按钮 【系统配置】,弹出窗体FrmConfig,在配置保存的时候,如果保存失败。则自动关闭 FrmAuto窗体。

#10


该回复于2013-04-17 14:06:49被管理员删除

#11


foreach (Form form in Application.OpenForms)
            {
                if (form.Name== "Form2")
                {
                    form.Close();
                    break;
                }
            }