-2

Form1我启用时IsMdiContainer,我添加了一个MenuStrip. 在Form1_Load我“新”中Form2,我正在考虑Form2.MdiParent哪个thisForm1. 我也在最大化Form2,这个操作效果很好。

在表格的左侧和右侧有一个表格,我想显示许多不同的表格,这些表格具有各种编辑功能,这取决于Form2在. treeViewtreeView

我想Form2根据从treeView. 我似乎无法向 MdiChild 添加表单,并且我一直在看到一些帖子,其中向表单添加表单可能会产生一些我不确定的编程问题。

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

提前感谢您的帮助。

4

1 回答 1

1

关于这个主题有很多信息,但是对于一些新开发人员来说,一些文档可能难以理解。按着这些次序:

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

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

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

它将加载一个代码视图,在该区域内放置:

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

这段代码所做的是三件不同的事情:

  • 第 1 行:它实际上是在调用我们的对象,在这种情况下是第二种形式。它实际上是在为我们构建我们的对象。

  • 第 2 行:实际上是将我们的第二个表单链接到我们当前的表单,这实际上是将我们的第二个表单转换为子表单

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

这就是您实际显示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 父窗体停靠/定位。这个例子并不漂亮,但我不完全确定你的要求。

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

于 2013-05-15T22:14:40.447 回答