将表单添加到MDI子项

Form1我启用了IsMdiContainer并添加了一个MenuStrip 。 在Form1_Load我“新” Form2 ,我正在将Form2.MdiParent Form2.MdiParentForm1 。 我也最大化Form2 ,这个操作运行良好。

Form2我在表单的左侧有一个treeView ,在表单的右侧,我想显示许多具有各种编辑function的不同表单,这些表单将取决于在treeView选择的节点或级别。

我想创建许多不同的表单来编辑将在Form2显示的数据,具体取决于treeView的选择。 我似乎无法向MdiChild添加表单,我一直在看一些post,在表单中添加表单可能会产生一些我不确定的编程问题。

我真的没有任何代码可以粘贴到这篇文章中,因为除了Mdi Parent和Child关系之外似乎没有任何工作,这很简单。

在此先感谢您的帮助。

关于这个主题有很多信息,但对于一些新的开发人员来说,某些文档很难理解。 跟着这些步骤:

  1. 打开Visual Studio
  2. 创建Windows窗体应用程序
  3. 单击您的表单
  4. 转到该表单的 属性
  5. 最小尺寸:1366像素乘768像素。
  6. 启动最大化
  7. 重要的元素是IsMdiContainer
  8. 打开工具箱。
  9. 菜单
  10. FileMenu拖到您的表单上
  11. 建立你的菜单
  12. 然后转到Solution Explorer
  13. 右键单击“ 添加项”
  14. 添加另一个表格
  15. 我把我作为Form2离开了(在真正的程序中,不是一个好名字)。

因此,在这十五个步骤中,我们拥有完成目标所需的一切。 那么我们要完成任务的目的是:

  1. 回到我们的第一张表格
  2. 转到我们的FileMenu
  3. 双击要链接的菜单按钮。

它会加载一个代码视图,在这个区域里面放这个:

 Form2 newFrm = new Form2(); newFrm.MdiParent = this; newFrm.Show(); 

这段代码的作用是三个截然不同的东西:

  • 第1行:它实际上是在调用我们的对象,在本例中是第二种forms。 它实际上正在为我们构建我们的对象。

  • 第2行:实际上是将我们的第二种forms与我们当前的forms联系起来,这实际上将我们的第二种forms转变为儿童forms

  • 第3行:这实际上是在单击按钮时显示我们的第二个表单。

这就是您实际显示表单所需的全部内容。

关于你的第二个问题,我不完全确定你想要完成什么。 这听起来像是在尝试拥有一棵树,然后在选择Node时, Form的右侧会更改为特定的上下文。

现在这不是最好的例子,但你的意思是这样吗?

 TreeNode node = treeView1.SelectedNode; if (node.Text.Contains("XP")) { TextBox one = new TextBox(); Panel i = new Panel(); i.Dock = DockStyle.Right; i.BackColor = Color.Black; i.Controls.Add(one); i.Show(); TreeFrm.ActiveForm.Controls.Add(i); } 

不确定这是不是你想要的。 显然你想要实现一个FlowLayoutPanel来使定位不是一件痛苦的事。 请记住MDI父级,子级表单充当MDI父级将无法正常工作。 由于大多数事情将默认为MDI父窗体停靠/定位。 这个例子并不漂亮,但我不完全确定你的要求。

您是否尝试将其他表单或组件停靠在同一表单上?