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

请教在winform中 MDI应程序中 单件调用窗件类应该怎么写呢?

楼主stevejobs(小康)2003-12-01 17:49:34 在 .NET技术 / C# 提问

请教在winform中   MDI应程序中   单件调用窗件类应该怎么写呢?  
  假如:  
  在MDI的主菜单中调用子窗体.  
  只想控制子窗件只有一个实例.  
   
  可是子窗打开后关闭掉了,该怎么判断呢?  
  谢谢. 问题点数:50、回复次数:7Top

1 楼stevejobs(小康)回复于 2003-12-01 17:50:53 得分 0

打字错了,是窗体,不是窗件!  
  请不要怪,似乎CSDN没有修改帖子的功能~~,没办法.  
   
  帮忙顶~一下啊Top

2 楼dahuzizyd(你就是我心中的女神)回复于 2003-12-01 18:44:29 得分 15

这个行不行?  
   
  是在button里作的简单的例子,你可以再改改:  
  private   void   button1_Click(object   sender,   System.EventArgs   e)  
  {  
  if   (   this.MdiChildren.Length   ==0)  
  {  
  Form2   form2   =   new   Form2();  
  form2.MdiParent   =   this;  
  form2.Show();  
  }  
  else  
  {  
  for   (   int   i   =0   ;   i<=   this.MdiChildren.Length   -1;   i++   )  
  {  
  if   (     this.MdiChildren[i]   is   Form2   )  
  {  
  this.MdiChildren[i].Activate();  
  break;  
  }  
  else  
  {  
  Form2   form2   =   new   Form2();  
  form2.MdiParent   =   this;  
  form2.Show();  
  }  
  }  
  }  
  }  
   
  private   void   button2_Click(object   sender,   System.EventArgs   e)  
  {  
  Form3   form3   =   new   Form3();  
  form3.MdiParent   =   this;  
  form3.Show();  
   
  }  
  Top

3 楼FileNewExit((呵呵))回复于 2003-12-01 19:16:03 得分 10

private   void   buttonNew_Click(object   sender,   System.EventArgs   e)  
  {  
        foreach(Form   f   in   this.MdiChildren)//控制子窗件只有一个实例  
              if(f   is   Form2)  
              {  
                    f.Show();    
                    f.Focus();  
                    return;    
                }  
        Form2   f2   =   new   Form2();//子窗从未创建过或打开后关闭掉了,生成一个新的Form  
        f2.MdiParent   =   this;  
        f2.Show();        
  }  
   
   
  ps:  
  >>>>控制子窗件只有一个实例  
        Why   use   MDI?Top

4 楼GmLibra(平常心)回复于 2003-12-01 19:28:24 得分 5

Form   activeChild   =   this.ActiveMdiChild;  
  if   (activeChild   ==   null)  
  {  
                                                                  調用子窗體.  
  }  
  else  
  {  
  不可以調用子窗體.  
  } Top

5 楼stevejobs(小康)回复于 2003-12-01 20:27:53 得分 0

to:   FileNewExit((呵呵))    
  其实MDI和SDI没区别的~~.~俺多此一举了~  
   
  ---------------  
   
  大家的方法都是在主窗中进行控制.  
  但似乎与Singleton的动机相违啊.(并非由类自身去保存它自己的唯一实例)  
  再顶~  
   
  如果都是这样的实现方式,那到再结帖吧!  
   
  Top

6 楼luhongming(andy)回复于 2003-12-02 09:42:54 得分 20

你在子窗体里声明一个Bool型的表态公有成员变量,是构造函数里把它置为True,在Dispos事件里把它置为False。这样你要创建子窗体的实例时,只要先判断这个Bool变量是True,还是False,是True表示已经有了这个窗体的实例,否则表示没有此窗体的实例。Top

7 楼py3zhsh(西大街霸)回复于 2003-12-02 23:52:59 得分 0

收藏Top

相关问题

  • mdi窗口调用
  • DLL中的MDI调用
  • 求教:MDI调用问题
  • Winform里如何调用WebService?
  • WinForm如何调用Web Service?
  • winForm调用web service问题!
  • winform调用webservice问题
  • 在DLL中怎样调用MDI窗体
  • 关于MDI窗体调用问题
  • 关于调用MDI子窗体问题

关键词

  • 窗体
  • 调用
  • 实例
  • mdi
  • 类
  • form2
  • true

得分解答快速导航

  • 帖主:stevejobs
  • dahuzizyd
  • FileNewExit
  • GmLibra
  • luhongming

相关链接

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

广告也精彩

反馈

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