我的项目中有3个表单.
form1
是MDI控制器form2
并且form3
是MDI儿童如何创建form1
为家长和form2
和form3
儿童?
像旧的MFC的MDI接口:
想象一下form2
是父母,并有一个按钮.如果单击,则必须form3
以父窗体(form1
)打开.我该如何设置?
首先,确保将Form1 IsMdiContainer
设置为true
.
然后实例化Form1和Form2,将Form1设置为Form2的MdiParent:
// Form1.IsMdiContainer should be true
Form1 form1 = new Form1();
// This automatically adds form2 into form1's MdiChildren collection
Form2 form2 = new Form2();
form2.MdiParent = form1;
Run Code Online (Sandbox Code Playgroud)
在Form2的代码中,具有类似以下内容来处理按钮的单击事件以实例化Form3.
public class Form2 : Form {
// Include as data member so we only instantiate one Form3
Form3 _form3;
public Form2() {
InitializeComponent();
Button1.Click += new EventHandler(Button1_Click);
}
private void Button1_Click(object sender, EventArgs e) {
if(_form3 == null) {
_form3 = new Form3();
// Set Form3's parent to be Form1
_form3.MdiParent = this.MdiParent;
}
}
}
Run Code Online (Sandbox Code Playgroud)
作为一对笔记,这段代码真的很快而且很脏.有几个不受欢迎的事情,比如Form2和Form3的耦合(以及无用的类名Form1,Form2和Form3).理想情况下,您可以通过从Form2引发一个表单容器可以挂钩并实例化Form3的事件来解耦Form2和Form3.此示例代码旨在为您提供方向.
归档时间: |
|
查看次数: |
26296 次 |
最近记录: |