随手发挥 发表于 2008-8-30 18:17

如何关闭主窗口

如果Form1是主窗口,Form2是子窗口,如何用代码实现关闭Form1,但保留Form2

bygg 发表于 2008-8-30 20:32

将两个窗体换一个角色不就可以了?

小仙 发表于 2008-8-31 12:43

如果你的Form1是Run里面的那就不可能了,皮之不存,毛将焉附。

bygg 发表于 2008-8-31 14:40

打开Form2时用另外一个进程

ohxho 发表于 2008-8-31 19:29

这个很简单。我也会。
你要设置Form1是为父窗体就是MdiParent属性:该属性用来获取或设置此窗体的当前多文档界面 (MDI) 父窗体
在Form2中Button_Click事件中写: Form frm = new Form(); frm.MdiParent = this.MdiParent; frm.Show(); 就行了啊,不需要特别的设置。
这个问题很简单。可能比较少人帮你

guoxhvip 发表于 2008-8-31 19:45

[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]]

hikor 发表于 2008-8-31 21:17

我也是用hide()来隐藏主窗体来达到只显示子窗体的效果  但是我进入子窗体  怎么能直接按子窗体右上角的X来达到关闭整个程序的效果呢?[em01]

guoxhvip 发表于 2008-8-31 22:57

[quote][bo][un]hikor[/un] 在 2008-8-31 21:17 的发言:[/bo]

我也是用hide()来隐藏主窗体来达到只显示子窗体的效果  但是我进入子窗体  怎么能直接按子窗体右上角的X来达到关闭整个程序的效果呢?[em01] [/quote]

在子窗体的closed事件里关闭主窗体 不就达到你想要的效果了吗

hellson 发表于 2008-9-1 15:47

[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]
这样?

王辛佳 发表于 2008-9-1 17:13

求助,顶

guoxhvip 发表于 2008-9-1 23:23

[quote][bo][un]hellson[/un] 在 2008-9-1 15:47 的发言:[/bo]



        private void Form2_FormClosing(object sender, FormClosingEventArgs e)
        {
            Application.Exit();
        }

这样? [/quote]

你这样试试 我记不清楚了

cxcninde 发表于 2008-9-3 16:45

application.exit();
是关闭整个程序啊,父子窗体全关吧。
还不如 用API 的 findwindow 和 showfindow 函数,想关哪个,关哪个。

smallwood13 发表于 2008-9-5 14:42

不用API,C#就有,如下:
                //关闭所有窗口
                foreach (Form tmpF in Application.OpenForms)
                {
                    tmpF.Close();
                }
同理,如果你不想关,就跳过某个窗口,如:
Application.OpenForms["frmMain"].Visible=true;
当然,第一次的主窗口是关不掉的,因为是以它启动线程的,但你可以改Program.cs文件,让它改变启动方式。

myemail1983 发表于 2008-9-5 19:00

呵呵,以前我也不会这个问题,现在感觉挺简单,
建议大家看下别人的源码,大部分有登陆窗口的做的可以的都会有处理这种情况,在Main程序入口处看一下,隐藏的方法不怎么样,因为你关了前面的窗口,后面那个隐藏的怎么处理啊,呵呵,大概就是form from1=new form()
if(from1.showdialog()=dialogresult.cancel)return;
application(这就是你要运行的那个窗体名)

随手发挥 发表于 2008-9-6 08:50

回复 2# bygg 的帖子

换个角色是什么意思啊?不太清楚,请指教...

页: [1]

编程论坛