CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

C#窗体来回切换的小问题

楼主szn(Hammer)2006-06-02 17:34:35 在 .NET技术 / C# 提问

在WinForm中,有2个窗体,  
  比如是frm1(主窗体)和frm2。  
  在frm2上有一个按钮btn2,然后显示frm1。  
   
  在frm1上有一个按钮btn1,然后显示frm2。  
   
  如果在btn2_Click中写  
  frm1   m_frm1   =   new   frm1();  
  m_frm1.show();  
  多次点击,会产生很多个frm1的副本。  
  同理,按照上述方法,也会产生多个frm2的副本。  
   
  我想始终只有1个frm1和frm2副本  
  并且能相互调用,应该如何处理?  
   
  我猜想如果把frm2   m_frm2   =   new   frm2();定义放在类定义里面,  
  这个样只有1个frm2的副本。对于frm2可以这样做,但是对于frm1,已经产生一个实例了。  
  所以还是不行。  
   
  我又试着把Applicaition.Run(m_frm2);编译器报错。  
   
  初学C#,搜索了以前的帖子也没找到,希望大家帮忙。  
  问题点数:50、回复次数:8Top

1 楼lovvver(ElephantTalk.Bright)回复于 2006-06-02 17:37:27 得分 2

由于两个窗体是主从关系,所以很难做到你要求的这样。至于产生多个副本问题,是可以解决的。Top

2 楼jijl2001(jijl2001)回复于 2006-06-02 17:37:42 得分 2

用单例模式Top

3 楼bhwhy(苏秦)回复于 2006-06-02 17:38:26 得分 2

用hide能满足吗Top

4 楼amandag(高歌)回复于 2006-06-02 17:43:45 得分 6

每次显示窗体的时候,先判断一下时候此窗体与已经打开的窗体标题是否相同,如果相同,则只将此窗体激活。  
   
  前两天刚见到VB.NET的写法,找到了帖上来Top

5 楼lovejxl(CapTsubasa)回复于 2006-06-02 18:38:32 得分 20

在form2类里定义一个form1类的成员f1,并写个set方法如:private   void   setform(Form   f){f1=f;},在form1类里定义一个form2类的成员f2,在form1_load事件里实例化f2,并调用set方法:f2.setform(this)  
   
  然后,在button1事件里写:this.Hide();f2.Show();  
   
  在button2的事件里写:this.Hide();f1.Show();Top

6 楼zdf9218(众里寻丫千百度, 丫儿却在灯火阑珊处)回复于 2006-06-02 19:46:29 得分 18

传说中的单件模式  
  public   class   Form1   :   System.Windows.Forms.Form  
  {  
  private   static   Form1   fm=null;  
   
  private   Form1()  
  {  
  InitializeComponent();  
  }  
  public   static   Form1   Instince()  
  {  
  if(fm==null)  
  {  
  fm=new   Form1();  
  return   fm;  
  }  
  else  
  return   fm;  
  }  
  }  
  两个Form都这么写  
  在button事件里写:Form1   fm1=Form1.Instince();fm1.show();Top

7 楼szn(Hammer)回复于 2006-06-02 19:54:47 得分 0

lovejxl(CapTsubasa)的方法是可行的  
  但是SetForm方法要改为  
  public   void   SetForm(Form1   f)  
  {  
        f1   =   f;  
  }  
  不然类型不匹配  
   
  基本思想就是把已经生成的form实例作为参数传递过去。  
   
  居然自己没想到,鄙视下自己。Top

8 楼szn(Hammer)回复于 2006-06-02 20:10:11 得分 0

to:   zdf9218()  
  “传说中的单件模式”  
  思想就是在实例化的时候判断下是否已经有这个实例了。  
  这个也是可行的。  
  Top

相关问题

关键词

得分解答快速导航

  • 帖主:szn
  • lovvver
  • jijl2001
  • bhwhy
  • amandag
  • lovejxl
  • zdf9218

相关链接

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

广告也精彩

反馈

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