6种方法使MDI父窗体调用子窗体(子窗体同时只能显示一个)

6种方法使MDI父窗体调用子窗体(子窗体同时只能显示一个)

           有一个MDI窗体叫MainForm,多个子窗体,如Form1,Form2…… 要使子窗体同时只能显示一个,

那么 方法1 dim Form1 as new form1 Form1.showDialog() 此方法一个MDI窗体同时只能显示一个,

方法2 在每一个子窗体的应用单态设计模式 在每一个子窗体上声明 private sub new() end sub Public Shared NewMe……               MDI窗体调用时 dim form1

as form1=form1.NewME form1.show() 这种方法每一个子窗体都要应用单态,代码重复多,不好

方法3 是方法2的改良 先写

一个ChildForm继承Form 在窗体上声明 private sub new() end sub Public Shared NewMe…… 再把所有的子窗体继承它

MDI窗体调用时 dim form1 as form1=form1.NewME form1.show() 这种方法很好,代码也少

方法4 利用MDI窗体的Controls属性 循环检测当是否以存在所需子窗体 存在则 .show .Activate 不存在则new了再.show

方法5 在MDI窗体上    

Dim Form1 as form1   

 Friend Sub ShowForm1()    

 If Form1 Is Nothing OrElse Form1.IsDisposed Then 

Form1 = New Form1                     

Form1.MdiParent = Me 

End If         

 Form1.Show()   

   Form1.Activate()   

End Sub

这种方法的缺点,每一个子窗体都要写一个这样的方法

方法6 利用泛型改良方法5 先写一个

ChildFormManager类 '''
 

<summary> 

'' 调用子窗口 '''

</summary> ''' 

<typeparam name="T"></typeparam> ''' <remarks></remarks>

Public Class ChildFormManager(Of T As {Form, New})   

  Public Shared Sub show(ByVal myform As T,  ByVal Mdi As Form)  

      If myform Is Nothing OrElse myform.IsDisposed Then   

   myform = New T        

  myform.MdiParent = Mdi       

     End If     

  myform.Show()    

myform.Activate()    

End Sub End Class

在MDI窗体中这样调用 dim Form1 as Form1 form1=ChildFormManager(of Form1).show(form1,Me)

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值