C# Form f = new Form(); f.show();this.close(); 为什么2个窗体都关闭了?
我想用一个窗体打开另一个窗体然后自己关闭,被打开的窗体不关闭。要的是关闭不是隐藏或者什么什么的,谢谢。...
我想用一个窗体打开另一个窗体然后自己关闭,被打开的窗体不关闭。要的是关闭不是隐藏或者什么什么的,谢谢。
展开
5个回答
展开全部
C#里面的窗体时线程创建的!一个窗体就是一个线程的!
从第一个线程楼里面new出来的窗体,是上一个窗体的子线程
所以,当父线程关闭后,就会关闭掉子线程了。
这个方法只能这样解决!
创建一个窗体或者线程,如果是窗体就隐藏这个主窗体(主线程)
在主窗体的Load事件里面,创建你的Form1,比如:
Form f = new Form();
f.m_Handle=this.Handle.toInt64();
f.show();
记得,这个窗体里面需要有个public的全局变量,用来接收父窗体的句柄的。
public long m_Handle;
然后呢,再在你创建的新窗体f中,随意什么事件中,你再使用代码
Form f = new Form();
f.parent=this.m_Handle;
this.close();
这样就可以关闭了!
从第一个线程楼里面new出来的窗体,是上一个窗体的子线程
所以,当父线程关闭后,就会关闭掉子线程了。
这个方法只能这样解决!
创建一个窗体或者线程,如果是窗体就隐藏这个主窗体(主线程)
在主窗体的Load事件里面,创建你的Form1,比如:
Form f = new Form();
f.m_Handle=this.Handle.toInt64();
f.show();
记得,这个窗体里面需要有个public的全局变量,用来接收父窗体的句柄的。
public long m_Handle;
然后呢,再在你创建的新窗体f中,随意什么事件中,你再使用代码
Form f = new Form();
f.parent=this.m_Handle;
this.close();
这样就可以关闭了!
展开全部
f.show();
这个语句,将新窗口显示之后,会继续执行下一个语句.
而你的下一个语句是 this.close(); 如果你关闭了父窗口,子窗口也会一并关闭的.
如果你是希望显示子窗口的时候一直等到子窗口关闭再继续下面的语句,你可以改为: f.showdialog();
如果你希望关闭之前的窗口,那就不能在之前的窗口里面进行new操作.
请直接在Program.cs文件里面 Application.Run(new Form());
例:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
namespace test
{
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());//当这个窗口关闭时继续执行下一语句.
Application.Run(new Form2());
}
}
}
这个语句,将新窗口显示之后,会继续执行下一个语句.
而你的下一个语句是 this.close(); 如果你关闭了父窗口,子窗口也会一并关闭的.
如果你是希望显示子窗口的时候一直等到子窗口关闭再继续下面的语句,你可以改为: f.showdialog();
如果你希望关闭之前的窗口,那就不能在之前的窗口里面进行new操作.
请直接在Program.cs文件里面 Application.Run(new Form());
例:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
namespace test
{
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());//当这个窗口关闭时继续执行下一语句.
Application.Run(new Form2());
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
this.Opacity = 0;
试试,就是把窗体隐藏了
试试,就是把窗体隐藏了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一个是父窗口 一个是子窗口, 父窗口都关闭了, 子窗口能不关闭么!
孩子, 还是隐藏吧!
孩子, 还是隐藏吧!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
form的name.close();
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询