如何在子窗体里 关闭另一个子窗体
本帖最后由 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;