指定最大化表单的位置?

时间:2015-06-22 23:01:46

标签: c# winforms

我有一个MDI应用程序,我最近在MDI容器中添加了一个新控件,它覆盖了客户端区域(子项出现和运行的区域)。问题是,当他们试图最大化他们的形式时,它出现在侧边栏后面:

Side panel overlapping child form

用于比较的原始表格(查看重叠)

Original child form

我知道我可以使用Form.MaximumSize属性限制每个表单最大化的总大小,但是我不确定如何将表单的x / y位置设置为位于侧栏。

我可以使用侧面板作为标记,即x = sidepanel.Width,因为它永远不会改变,但我不知道如何将其应用于最大化的形式。

或者,是否可以为侧边栏提供与菜单栏相同的行为?也就是说 - 菜单栏不被认为是在客户区;所以当表单最大化时,它不会与子表单重叠?

1 个答案:

答案 0 :(得分:1)

好的,所以经过一些摆弄后,我发现主要的问题是,因为我是动态添加控件,所以控制它有点困难。所以我做了这个:

  • 向MDI Parent
  • 添加了一个面板(使用表单设计器)
  • Dock属性设置为" left"
  • 动态添加自定义控件到面板:

    SidePanel = new Menu_SidePanel();
    
    SidePanel.Location = new System.Drawing.Point(0, 0);
    SidePanel.Anchor = (AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left);
    
    panel1.Controls.Add(SidePanel);
    

现在,因为该面板已被添加到"停靠"在父表单上,子表单的其余部分在最大化时使用侧面板作为另一个边界。

enter image description here