gpt4 book ai didi

c# - C# Parent 和 Child 中的 MDI 窗体

转载 作者:行者123 更新时间:2023-11-30 13:41:03 25 4
gpt4 key购买 nike

我的项目有 3 个表格。

  • form1是MDI Controller
  • form2form3 是 MDI 子级

如何将 form1 创建为父级,将 form2form3 创建为子级?

类似于旧 MFC 的 MDI 界面:

enter image description here

假设 form2 是父级并且有一个按钮。如果单击,它必须在父窗体 (form1) 中打开 form3。我该如何设置?

最佳答案

首先,确保 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;

在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;
}
}
}

需要注意的是,这段代码确实又快又脏。它有几个不受欢迎的地方,比如 Form2 和 Form3 的耦合(以及无用的类名 Form1、Form2 和 Form3)。理想情况下,您可以通过从 Form2 引发一个事件来分离 Form2 和 Form3,您的表单容器可以挂接到 Form3 并实例化 Form3。此示例代码旨在为您指明方向。

关于c# - C# Parent 和 Child 中的 MDI 窗体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6076526/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com