如何关闭主窗口
如果Form1是主窗口,Form2是子窗口,如何用代码实现关闭Form1,但保留Form2你要设置Form1是为父窗体就是MdiParent属性:该属性用来获取或设置此窗体的当前多文档界面 (MDI) 父窗体
在Form2中Button_Click事件中写: Form frm = new Form(); frm.MdiParent = this.MdiParent; frm.Show(); 就行了啊,不需要特别的设置。
这个问题很简单。可能比较少人帮你 [quote][bo][un]ohxho[/un] 在 2008-8-31 19:29 的发言:[/bo]
这个很简单。我也会。
你要设置Form1是为父窗体就是MdiParent属性:该属性用来获取或设置此窗体的当前多文档界面 (MDI) 父窗体
在Form2中Button_Click事件中写: Form frm = new Form(); frm.MdiParent = this.Md ... [/quote]
我理解的和LS这个MM理解的不一样哦 LZ的意思有可能是 这两个窗体是独立的 但是启动运行的是Form1 然后在Form1里弹出Form2 现在想关闭Form1但是保留Form2 因为Form1为主窗体 所以关闭Form1后Form2也会跟着一起关闭
其实这个问题以前很多人问过 有几种方法可以实现
1.使用hide()隐藏Form1
2.释放Form1资源 那个方法我记不清楚了 好象是dispose = false
3.使用多线程 让两个窗体运行在不同的线程中 这样关闭Form1 Form2就不会关掉了
使用多线程的方法直接看
http://bbs.bccn.net/viewthread.php?tid=177650&highlight=%2B%C3%CE%D0%C4
[[it] 本帖最后由 guoxhvip 于 2008-8-31 22:56 编辑 [/it]] 我也是用hide()来隐藏主窗体来达到只显示子窗体的效果 但是我进入子窗体 怎么能直接按子窗体右上角的X来达到关闭整个程序的效果呢?[em01] [quote][bo][un]hikor[/un] 在 2008-8-31 21:17 的发言:[/bo]
我也是用hide()来隐藏主窗体来达到只显示子窗体的效果 但是我进入子窗体 怎么能直接按子窗体右上角的X来达到关闭整个程序的效果呢?[em01] [/quote]
在子窗体的closed事件里关闭主窗体 不就达到你想要的效果了吗 [quote][bo][un]guoxhvip[/un] 在 2008-8-31 22:57 的发言:[/bo]
在子窗体的closed事件里关闭主窗体 不就达到你想要的效果了吗 [/quote]
[code] private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
Application.Exit();
}
[/code]
这样? 求助,顶 [quote][bo][un]hellson[/un] 在 2008-9-1 15:47 的发言:[/bo]
private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
Application.Exit();
}
这样? [/quote]
你这样试试 我记不清楚了 application.exit();
是关闭整个程序啊,父子窗体全关吧。
还不如 用API 的 findwindow 和 showfindow 函数,想关哪个,关哪个。 不用API,C#就有,如下:
//关闭所有窗口
foreach (Form tmpF in Application.OpenForms)
{
tmpF.Close();
}
同理,如果你不想关,就跳过某个窗口,如:
Application.OpenForms["frmMain"].Visible=true;
当然,第一次的主窗口是关不掉的,因为是以它启动线程的,但你可以改Program.cs文件,让它改变启动方式。 呵呵,以前我也不会这个问题,现在感觉挺简单,
建议大家看下别人的源码,大部分有登陆窗口的做的可以的都会有处理这种情况,在Main程序入口处看一下,隐藏的方法不怎么样,因为你关了前面的窗口,后面那个隐藏的怎么处理啊,呵呵,大概就是form from1=new form()
if(from1.showdialog()=dialogresult.cancel)return;
application(这就是你要运行的那个窗体名)
回复 2# bygg 的帖子
换个角色是什么意思啊?不太清楚,请指教...页:
[1]
