CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

请教一下在C#的WinForm中一个窗体切换另一个窗体的问题

楼主kxxlqsg(kxxl)2005-12-19 08:45:31 在 .NET技术 / C# 提问

请问:  
  在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

相关问题

  • 关于c#窗体最大化与还原的切换问题
  • 两个窗体的切换问题,VB.NET改学C#,不知道怎么写了.
  • 窗体切换的问题
  • 多个窗体切换
  • intraweb如何切换窗体...
  • 一个关于窗体的初级问题(C#WINFORM)
  • 怎样禁止winform窗体的缩放 c#
  • 如何实现从子窗体切换到父窗体???
  • 如何进行窗体切换
  • 窗体焦点切换问题

关键词

  • c#
  • winform
  • 代码
  • 窗体
  • frmtwo
  • formone
  • formtwo
  • frmone
  • formthree
  • frmt

得分解答快速导航

  • 帖主:kxxlqsg
  • jinqinghai

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo