6种方法使MDI父窗体调用子窗体(子窗体同时只能显示一个)
2008-06-21 12:56
330 查看
种方法使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)
有一个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)
相关文章推荐
- JQuery ajax 如何设置同步调用(同时只能触发一个函数) 解决与层显示信息时候的冲突问题
- C#设置MDI子窗体只能弹出一个的方法
- C# 设置MDI子窗体只能弹出一个的方法
- 小技巧:C++限制一个方法只能在某个类当中被调用
- 【机房收费】---(窗体显示) 实时错误426 只允许一个MDI窗体 (二)
- C# winform中一个类中如何调用另一个窗体的控件或方法
- 关于Drawable资源被用在多个地方显示图片时,改变其中一个实例的状态会同时作用到其他实例的解决方法
- Delphi窗体显示后弹出一个对话框的方法
- 【转】C# 子窗体如何调用父窗体的方法
- C#实现打开画图的同时载入图片、最大化显示画图窗体的方法
- MDI窗体容器中,相同窗体只显示一个
- WinForm中一个窗体调用另一个窗体的控件和事件的方法(附带源码)
- 返回多个不同类型参数的值(out)可变参数一维数组( params )把值从方法中带出(ref) 方法递归(方法自己调用自己与循坏类似注意return每次只能跳出一个方法))
- Qt中显示一个窗体的方法
- 一个问题——在MDI窗体中添加控件后显示子窗体
- c#中一个窗体调用另一个窗体的控件及方法(转贴)
- C# winform中一个类中如何调用另一个窗体的控件或方法
- MDI窗体,子窗体在父窗体中最大化,如果子窗体已经打开则显示,不重复打开窗体
- eclipse 按ctrl建只能显示一个方法的解决
- 一个流行且实用的JS表单验证提示,演示了怎么自定义错误信息的显示方式,同时通过写FormValid.showError类方法来实现错误显示方式自定义: errMsg 是一个错误消息的数组,这样方便自定