将表单添加到MDI子项
在Form1
我启用了IsMdiContainer
并添加了一个MenuStrip
。 在Form1_Load
我“新” Form2
,我正在将Form2.MdiParent Form2.MdiParent
给Form1
。 我也最大化Form2
,这个操作运行良好。
在Form2
我在表单的左侧有一个treeView
,在表单的右侧,我想显示许多具有各种编辑function的不同表单,这些表单将取决于在treeView
选择的节点或级别。
我想创建许多不同的表单来编辑将在Form2
显示的数据,具体取决于treeView
的选择。 我似乎无法向MdiChild添加表单,我一直在看一些post,在表单中添加表单可能会产生一些我不确定的编程问题。
我真的没有任何代码可以粘贴到这篇文章中,因为除了Mdi Parent和Child关系之外似乎没有任何工作,这很简单。
在此先感谢您的帮助。
关于这个主题有很多信息,但对于一些新的开发人员来说,某些文档很难理解。 跟着这些步骤:
- 打开Visual Studio
- 创建Windows窗体应用程序
- 单击您的表单
- 转到该表单的 属性
- 最小尺寸:1366像素乘768像素。
- 启动最大化
- 重要的元素是IsMdiContainer
- 打开工具箱。
- 去菜单
- 将FileMenu拖到您的表单上
- 建立你的菜单
- 然后转到Solution Explorer
- 右键单击“ 添加项”
- 添加另一个表格
- 我把我作为Form2离开了(在真正的程序中,不是一个好名字)。
因此,在这十五个步骤中,我们拥有完成目标所需的一切。 那么我们要完成任务的目的是:
- 回到我们的第一张表格
- 转到我们的FileMenu
- 双击要链接的菜单按钮。
它会加载一个代码视图,在这个区域里面放这个:
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父窗体停靠/定位。 这个例子并不漂亮,但我不完全确定你的要求。
您是否尝试将其他表单或组件停靠在同一表单上?