none
C# 新建窗体,关闭主窗体,子窗体不关闭的方法 RRS feed

答案

  • 你好!

        你可以开启一个新的线程,在里面显示一个窗体,这样你关闭主窗体,这个窗体就不会关闭了!


    周雪峰
    2010年6月6日 4:28
    版主
  • 互不影响就不叫子窗体了。如果你关闭窗口的话,所有子窗口都会被销毁。如果你要你的窗口不被销毁,需要创建一个不是需要关闭的窗体的子窗体的窗口。

    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP
    2010年6月6日 5:31
    版主
  • 如果要完全互不影响,必须启动窗体的消息循环,但由于一个线程只能有一个消息循环,所以如雪峰兄所说,你可以在新的线程中启动窗口,如下:

    new Thread(() => Application.Run(new Form2())).Start();

    如此便可以独立启动Form2,关闭Form1后Form2不会关闭,并且当所有窗口关闭时,应用程序才结束。

    不过这种情况下,如果多个窗口要访问共享资源,必须注意线程同步问题。


    Tech Blog: http://gildor.cnblogs.com
    2010年6月6日 6:20

全部回复

  • 你好!

        你可以开启一个新的线程,在里面显示一个窗体,这样你关闭主窗体,这个窗体就不会关闭了!


    周雪峰
    2010年6月6日 4:28
    版主
  • 互不影响就不叫子窗体了。如果你关闭窗口的话,所有子窗口都会被销毁。如果你要你的窗口不被销毁,需要创建一个不是需要关闭的窗体的子窗体的窗口。

    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP
    2010年6月6日 5:31
    版主
  • 如果要完全互不影响,必须启动窗体的消息循环,但由于一个线程只能有一个消息循环,所以如雪峰兄所说,你可以在新的线程中启动窗口,如下:

    new Thread(() => Application.Run(new Form2())).Start();

    如此便可以独立启动Form2,关闭Form1后Form2不会关闭,并且当所有窗口关闭时,应用程序才结束。

    不过这种情况下,如果多个窗口要访问共享资源,必须注意线程同步问题。


    Tech Blog: http://gildor.cnblogs.com
    2010年6月6日 6:20