VS2005 winform在子窗体中关闭父窗体,可以做到吗?

hsie168518 2009-07-30 05:52:10
rt
...全文
1905 36 打赏 收藏 转发到动态 举报
写回复
用AI写文章
36 条回复
切换为时间正序
请发表友善的回复…
发表回复
lanyun32 2011-06-08
  • 打赏
  • 举报
回复
举个例子:Login(父窗体)登录成功后,进入HomePage。
this.Visible = false;
HomePage main = new HomePage();
main.LoginForm = this;
main.Show();

在main里写一个
private Login _loginForm;
public Login LoginForm
{
get
{
return _loginForm;
}
set
{
_loginForm = value;
}
}
当Homepage里写一段,
private void HomePage_FormClosing(object sender, FormClosingEventArgs e)
{
if (MessageBox.Show("确定退出吗?", "消息来自主界面",MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.Cancel)
{
e.Cancel = true;
}
else
{
this.LoginForm.Close();
}
}
这样就可以实现了关闭程序啦
rfasm 2011-03-24
  • 打赏
  • 举报
回复
不过父窗体一关闭,整个程序就退出。这是一定的
rfasm 2011-03-24
  • 打赏
  • 举报
回复
10楼的方法足矣!鄙人验证过,可行!
hsie168518 2009-12-08
  • 打赏
  • 举报
回复
我换了方法,直接用这个了

Application.Exit();
coffee_shy 2009-12-06
  • 打赏
  • 举报
回复
我也是同样的问题 不知道楼主有没有解决这个问题 结果如何 怎么去实现?
CHN_smallfox 2009-07-31
  • 打赏
  • 举报
回复
父窗体进入子窗体的时候传下父窗体的this参数,子窗体写个带参构造函数,然后就可以关父窗体了,不过子窗体会同时关闭
VistaKobe 2009-07-31
  • 打赏
  • 举报
回复
顶15楼!
hecker728 2009-07-31
  • 打赏
  • 举报
回复
父窗体隐藏。。

等到子窗体关闭后,再去关闭主窗体。。效果和楼主一样
lzc2125 2009-07-31
  • 打赏
  • 举报
回复
楼主是想只单纯的关闭父窗口?
估计不可能吧
lsj_zrp 2009-07-31
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 hsie168518 的回复:]
引用 8 楼 lsj_zrp 的回复:
父窗口(Form2 ):
            Form3 frm = new Form3();
            frm.Owner = this;
            frm.Show();

子窗口(Form3 ):
          Form2 frm = (Form2)this.Owner;
            frm.Close();
这样子窗口也会关掉



这个方法不行,

f.MdiParent = this;才会把子窗体加在父窗体中
[/Quote]
那你把frm.Owner = this;改成frm.MdiParent = this;

然后 Form2 frm = (Form2)this.MdiParent; frm.Close();就行了

或者隐藏父窗口Hide(),子窗口关闭的时候用Application.Exit();
markhao 2009-07-31
  • 打赏
  • 举报
回复
两种方法,一种是将父窗体当做参数传给子窗体,当然子窗体的构造函数必须有父窗体这个参数...
一种是调用this.ParentForm.Close()
cykevin 2009-07-31
  • 打赏
  • 举报
回复
不好意思,刚才回一次没响应,又点了一下。
cykevin 2009-07-31
  • 打赏
  • 举报
回复
很简单,父窗体打开子窗体的时候,用showdialog方法而不用show方法,然后在父窗体中去判断子窗体的返回结果,像这样:
if(child_from.showdialog()==DialogResult.OK)
{
this.close();
}
cykevin 2009-07-31
  • 打赏
  • 举报
回复
很简单,父窗体打开子窗体的时候,用showdialog方法而不用show方法,然后在父窗体中去判断子窗体的返回结果,像这样:
if(child_from.showdialog()==DialogResult.OK)
{
this.close();
}
lxxlql 2009-07-31
  • 打赏
  • 举报
回复
其实15楼的隐藏的方法是可以的,但是有一个问题就是:每次启动程序,主窗体都没有关,会有一个进程,第二次开就会报异常的,所以隐藏之后,在退出程序还得关闭。
16楼利用委托可以很好的解决!顶!
  • 打赏
  • 举报
回复
在子窗体closing事件里写Application.Exit();
laoban108 2009-07-31
  • 打赏
  • 举报
回复
你关了父的,子的也就关了吧?
sz_xd 2009-07-31
  • 打赏
  • 举报
回复
up
zhouzangood 2009-07-30
  • 打赏
  • 举报
回复
LZ把正确的代码贴出来学习学习吧
wuxing2006 2009-07-30
  • 打赏
  • 举报
回复
form1

Form2 form =new Form();
form.ShowDialog();
this.Close();
加载更多回复(16)

110,578

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧