visual C#中如何在打开另一个窗口的同时关闭之前窗口

很急啊!在线等。。。。privatevoidinlabel_Click(objectsender,EventArgse){loginFormfrm2=newloginFo... 很急啊!在线等。。。。
private void inlabel_Click(object sender, EventArgs e)
{
loginForm frm2 = new loginForm();
frm2.Show();
this.Close();
}
这个是我写的代码,但是用this.Close();会关闭整个程序。
我要的是原来的窗口关闭,打开的新窗口仍然存在!!
展开
 我来答
m450378774
2009-12-22
知道答主
回答量:9
采纳率:0%
帮助的人:0
展开全部
我提供一种方法,先在第一个窗口声明一个公共的bool变量并赋值为true:
如public bool hh = true;
在program类里运行第二个窗口,主要代码:
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Form1 form1 = new Form1();
form1.ShowDialog(); //模式窗口,先运行Form1的作用
if (from1.hh == false)
{
Application.Run(new Form2());
}
然后在Form1的关闭的相关控件(或按钮或什么的,是你要关闭这个窗口的控件) 将hh赋值为false
第一个窗口(Form1)还没完: 在From1的FormClosing事件(关闭窗口时运行的事件)中(双击这个事件编写代码)判断bool变量hh的值:
if(hh == true)
{
Application.Exit();
}

补: 你刚开始想在点击那个控件再显示另一个窗口的想法就不要了
我这样写绝对可以 我自己都是这样写的,很赞! 那个控件的点击事件就只用写:把hh赋值为false 就可以了!当然Form1这个窗口是要this.Close()的 试试看吧! 如果再遇到什么问题再和我联络 ,大家一起探讨
FantasyChump
2009-12-23 · TA获得超过3288个赞
知道大有可为答主
回答量:2127
采纳率:0%
帮助的人:2236万
展开全部
在.net的WinForm程序中,如果是直接起动的Form作为主窗口,那么这个主窗口是不能关闭的,因为它维护了一个Windows消息循环,它一旦关闭了就等于声明整个应用程序结束,所以新打开的窗口也就被自动关闭了。

解决方案:
1.更改打开窗口的顺序,比如LoginForm在主窗口打开前就用不同的打开方式打开(如ShowDialog)
2.或不要关闭主窗口,而改为隐藏。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小羊说编程
2009-12-22 · 专注编程模式教学,提升大家实战经验
小羊说编程
采纳数:406 获赞数:1394

向TA提问 私信TA
展开全部
private void inlabel_Click(object sender, EventArgs e)
{
loginForm frm2 = new loginForm();
frm2.Show();
this.Hide() ;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
乁Freedom
2009-12-22 · TA获得超过2128个赞
知道小有建树答主
回答量:1580
采纳率:0%
帮助的人:1407万
展开全部
public void button1(Object sender, 不记得了)
{
Frame2 f2 = new Frame2();
f2.show();
this.close();
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式