C# Form f = new Form(); f.show();this.close(); 为什么2个窗体都关闭了?

我想用一个窗体打开另一个窗体然后自己关闭,被打开的窗体不关闭。要的是关闭不是隐藏或者什么什么的,谢谢。... 我想用一个窗体打开另一个窗体然后自己关闭,被打开的窗体不关闭。要的是关闭不是隐藏或者什么什么的,谢谢。 展开
 我来答
独孤之圣
推荐于2017-09-20 · TA获得超过433个赞
知道小有建树答主
回答量:865
采纳率:50%
帮助的人:587万
展开全部
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();
这样就可以关闭了!
poolvc
2010-09-26 · TA获得超过432个赞
知道小有建树答主
回答量:254
采纳率:0%
帮助的人:172万
展开全部
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());
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
X_eroder
2010-09-26 · TA获得超过135个赞
知道小有建树答主
回答量:94
采纳率:100%
帮助的人:75.3万
展开全部
this.Opacity = 0;
试试,就是把窗体隐藏了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
点浩的路亚米级梦
2010-09-26 · 超过28用户采纳过TA的回答
知道答主
回答量:95
采纳率:0%
帮助的人:65.2万
展开全部
一个是父窗口 一个是子窗口, 父窗口都关闭了, 子窗口能不关闭么!
孩子, 还是隐藏吧!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
z3122139
2010-09-26 · TA获得超过152个赞
知道答主
回答量:145
采纳率:0%
帮助的人:114万
展开全部
form的name.close();
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式