展开全部
父窗体:form2.ShowDialog(this);
子窗体的Closed事件里写:this.Owner.Close();
两个窗体就一起关了。
子窗体的Closed事件里写:this.Owner.Close();
两个窗体就一起关了。
追问
程序报错了 提示无法访问以释放的对象 对象(父窗体)
是怎么回事啊
追答
那改成this.Owner.Hide();如何,正常一个winform如果被隐藏了,有没有处理,会自己关掉。
或者改为在Closing事件里关闭父窗体,因为Closed执行时,实际资源已经被释放了,窗体已经关了,而Closing时还处于决定是否要关闭的阶段。
我一般都是在显示子窗体是就已经把父窗体Hide了,子窗体关了之后,如果不显示父窗体,程序就会关闭。
展开全部
仅供参考:
1、父窗体Form1中调用子窗体Form2代码:
Form2 fr = new Form2();
fr.ShowDialog(this);
2、子窗体的FormClosed事件代码:
private void Form2_FormClosed(object sender, FormClosedEventArgs e)
{
Form1 fr = new Form1();
fr = (Form1)this.Owner;
fr.Dispose();
fr.Close();
}
1、父窗体Form1中调用子窗体Form2代码:
Form2 fr = new Form2();
fr.ShowDialog(this);
2、子窗体的FormClosed事件代码:
private void Form2_FormClosed(object sender, FormClosedEventArgs e)
{
Form1 fr = new Form1();
fr = (Form1)this.Owner;
fr.Dispose();
fr.Close();
}
追问
程序报错了 提示无法访问以释放的对象 对象(父窗体)
是怎么回事啊
追答
你看看有没有释放掉
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
子窗体关闭的方法里NEW一下父窗体,然后调用.close()
追问
我是要做一个登陆窗口,主程序一运行就会调出这个登录窗口,NEW一下的话会又有一个登陆窗口出来
追答
为什么会调出这个登录窗口?那你调用打开新窗口的时候都隐藏一下登录窗口就OK了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
form main
private void Form1_Load(object sender, EventArgs e)
{
Form2 f = new Form2();
f.Show();
f.FormClosed += Close;
}
private void Close(object sender, EventArgs e) //方法自定义,通过订阅委托执行
{
this.Close();
}
form child
private void button1_Click(object sender, EventArgs e)
{
this.Close();
}
private void Form1_Load(object sender, EventArgs e)
{
Form2 f = new Form2();
f.Show();
f.FormClosed += Close;
}
private void Close(object sender, EventArgs e) //方法自定义,通过订阅委托执行
{
this.Close();
}
form child
private void button1_Click(object sender, EventArgs e)
{
this.Close();
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询