在Form1
我正在启用IsMdiContainer
,我添加了MenuStrip
。在Form1_Load
我“新”Form2
,我将Form2.MdiParent
分配给this
Form1
。我也在最大化Form2
,这项运作效果很好。
在Form2
我在表单的左侧有一个treeView
,在表单的右侧我希望显示多种不同的表单,这些表单具有各种编辑功能,这些功能将取决于在treeView
中选择的节点或级别上。
我想创建一些不同的表单来编辑将在Form2
中显示的数据,具体取决于treeView
的选择。我似乎无法向MdiChild添加表单,我一直在看一些帖子,在表单中添加表单可能会产生一些我不确定的编程问题。
我真的没有任何代码可以粘贴到这篇文章中,因为除了Mdi Parent和Child关系之外似乎没什么用处,这很简单。
提前感谢您的帮助。
答案 0 :(得分:1)
关于这个主题有很多信息,但是对于一些新的开发人员来说,某些文档很难理解。请按照以下步骤操作:
因此,在这十五个步骤中,我们拥有完成目标所需的一切。那么我们要完成任务的目的是:
它将加载一个代码视图,在这个区域内放置:
Form2 newFrm = new Form2();
newFrm.MdiParent = this;
newFrm.Show();
这段代码的作用是三个不同的东西:
第1行:它实际上是在调用我们的对象,在本例中是第二种形式。它实际上正在为我们构建我们的对象。
第2行:实际上是将我们的第二个表单链接到我们当前的表单,这实际上将我们的第二个表单转换为子表单。
第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父窗体停靠/定位。这个例子并不漂亮,但我不完全确定你的要求。
您是否尝试将其他表单或组件停靠在同一表单上?