请教一下在C#的WinForm中一个窗体切换另一个窗体的问题
请问:
在C#的WinForm中
窗体frmOne 窗体frmTwo 按钮btnOK
frmOne窗体切换到frmTwo窗体时,frmOne关闭frmTwo显示 这个地方应该怎么写代码?请教。。
问题点数:20、回复次数:22Top
1 楼emp(Thinking)回复于 2005-12-19 08:51:03 得分 0
在frmOne的按键加个点击事件
加入如下代码:
frmTwo m1 = new frmTwo();
m1.ShowDialog();
this.Close();Top
2 楼tianwai112(星星之火)回复于 2005-12-19 09:01:51 得分 0
frmTwo frmT = new frmTwo();
frmT.Show();
this.Close();Top
3 楼Tenner(BE.Tenner)回复于 2005-12-19 09:09:07 得分 0
楼上的试过么,在单线程环境下,this.Close() 以后,frmT也会被一同关闭的Top
4 楼morou_007(默柔)回复于 2005-12-19 09:10:16 得分 0
在frmOne的按键加个点击事件
加入如下代码:
frmTwo user = new frmTwo();
this.Hide();
user.ShowDialog();//or user.Show()
Top
5 楼emanlee(造化弄人)回复于 2005-12-19 09:21:06 得分 0
to emp(Thinking)and tianwai112(星星之火)
///////////////////////////////////////////////////////////
在frmOne的按键加个点击事件
加入如下代码:
frmTwo m1 = new frmTwo();
m1.ShowDialog();
this.Close();
frmTwo frmT = new frmTwo();
frmT.Show();
this.Close();
注:这两种方法都不能实现搂住的需求。如同 Tenner(Tenner)所说。
////////////////////////////////////////////////////////////
to morou_007(默柔)
在frmOne的按键加个点击事件
加入如下代码:
frmTwo user = new frmTwo();
this.Hide();
user.ShowDialog();//or user.Show()
注:这种方法不能实现,还有严重问题。你想象如果frmOne多次被打开,会出现什么问题?Top
6 楼zk911(尘埃)回复于 2005-12-19 09:33:43 得分 0
FormONw formone=new FormOne;
formone.Hide();
FormTwo formtwo =new FormTow;
fromtow.ShowDialog();
主窗体如果执行close操作整个程序都将关闭
所以要隐藏主窗体才对!!!
Top
7 楼zk911(尘埃)回复于 2005-12-19 09:34:13 得分 0
FormOne formone=new FormOne;
formone.Hide();
FormTwo formtwo =new FormTow;
fromtow.ShowDialog();
Top
8 楼yuqi508(毛路)回复于 2005-12-19 09:40:19 得分 0
支持与影同舞
FormOne formone=new FormOne;
formone.Hide();
FormTwo formtwo =new FormTow;
fromtow.ShowDialog();Top
9 楼huangguangdou(人生最遗憾的,莫过于,轻易的放弃了不该放弃的)回复于 2005-12-19 09:48:58 得分 0
hide()只是隐藏窗体,而不是关闭,close()是关闭,但却不适用于默认启动窗体(若关闭默认启动窗体时整个启动窗体也要关闭),最好的办法是在启动第一个窗体的 apllication.run()中放上一个方法。new Form1();也就是默认启动窗体Form2Top
10 楼jailu(jailu)回复于 2005-12-19 09:56:19 得分 0
同时,不能Close,得用Hide
FormTwo newfrm = new FormTwo();
newfrm.Show();
this.Hide();Top
11 楼uumlwy(爱老婆)回复于 2005-12-19 10:01:16 得分 0
同时,不能Close,得用Hide
FormTwo newfrm = new FormTwo();
newfrm.Show();
this.Hide();
Top
12 楼hl_ws(小数点)回复于 2005-12-19 10:34:50 得分 0
用Hide()方法隐藏,除非你是MDI窗体Top
13 楼orbitbd(大天二)回复于 2005-12-19 10:52:29 得分 0
也可以主窗体了另设一个,隐藏即可,这样New的窗体就可以随便关了。不过要处理好this.Close()和Application.Exit()的关系,否则只是Close无法退出程序的。
例如C/S的用户登录界面Top
14 楼kxxlqsg(kxxl)回复于 2005-12-19 10:52:49 得分 0
我想重新叙述一下这个过程:
在C#的WinForm中
有三个窗体
窗体frmOne(按钮btnOneOK)
窗体frmTwo(按钮btnTwoOK)
窗体frmThree(按钮btnThreeExit)
话题A: 系统载入frmOne,当点击btnOneOk时激活frmTwo窗体同时frmOne要关闭,如果是这样的话会
出现整个程序关闭了~~
接着上边的话题A去想如果不关闭frmOne,只是隐藏frmOne,那么程序还可以运行,但是还有一个是frmThree窗体,假如点击frmTwo上边的btnTwoOK时,frmTwo隐藏或关闭,frmThree显示,这样程序是可以运行的,但是如果点击btnThreeExit时想让整个程序关闭,这该如何做呢?Top
15 楼CHW1225(酸梨汤)回复于 2005-12-20 14:15:21 得分 0
只能用hide方法,不能用CLOSE。
如果要从frmthree关闭整个程序则要设置frmone的close()事件Top
16 楼x355(有点凉)回复于 2005-12-20 14:26:15 得分 0
formTwo 设置一个属性formOne
formThree 设置两个属性 formTwo,formOne
formOne show formTwo 时 formTwo.formOne = this; formOne.Hide();
formTwo show formThree 时 formThree.formTwo = this; formThree.formOne = formTwo.formOne;formTwo.Hide();
formThree.Close 事件 里 formThree.formOne.Close();formThree.formTwo.Close();
Top
17 楼shaun1981(打破砂锅问到底)回复于 2005-12-20 15:08:23 得分 0
MARKTop
18 楼huangpeter(peter)回复于 2005-12-20 16:25:56 得分 0
我的理解是只要main函数不要放在formOne里面,另外开一个类来写main函数,formOne就可以close了Top
19 楼huangpeter(peter)回复于 2005-12-20 16:58:54 得分 0
//new class ,just has main function
static void Main()
{
Form1 form1=new Form1();
form1.ShowDialog();
}
//Form1 button click event
private void button1_Click(object sender, System.EventArgs e)
{
this.Dispose();
Form2 form2=new Form2();
form2.ShowDialog();
}Top
20 楼fangtao52100(方涛)回复于 2005-12-21 13:53:45 得分 0
窗体一上面有一个按键,代码如下:
private Form form_2=new form2()
private void button1_click(object sender,System.eventargs e)
{
form_2.show();
this.hide();
}
第二个窗体可以显示出来,可是在关闭第二个窗本时总会出现错误.Top
21 楼kxxlqsg(kxxl)回复于 2005-12-22 10:55:06 得分 0
呵呵~~我知道用什么方法了~~我研究了一个小时,终于让我研究出来了,
实现方法:
在C#的WinForm中
有三个窗体
窗体frmOne(按钮btnOneOK)
窗体frmTwo(按钮btnTwoOK)
窗体frmThree(按钮btnThreeExit)
frmOne载入点击按钮btnOneOK时 把frmOne的属性 ShowInTaskbar 设置为 false
然后frmTwo.show();
frmTwo载入以后
点击btnTwoOK时激活frmThree窗体
这时如果点击按钮 btnTreeExit 时 用frmOne.ActiveForm.Close() 方法
就可以关闭整个应用程序了
----------------------------------------
在此谢谢大家的热心帮忙。。。
问题解决---Top
22 楼jinqinghai()回复于 2005-12-22 11:06:09 得分 20
frmTwo frm=new frmTwo();
this.close();
application.run(frm);
Top




