可视化inheritance – 将设计器中的控件添加到TableLayoutPanel中托管的Panel

我正在制作一个基本表单(WinForm),就像我的一般表单设计的蓝图一样,我希望面板(截图中的P_Content)是控件放在子表单中的位置。

但是说P_Content被锁定在子窗体中,在代码中添加控件显然有效但在设计视图中却没有。

该面板是公共的,其父容器( TableLayoutPanel )也是公共的。

这看起来很基本,但我似乎无法找到任何答案为什么会发生这种情况。

P_Content是一个很大的空白空间。

截图

它似乎已经在TableLayoutPanel托管了Panel 。 根据文档,您应该避免TableLayoutPanel可视inheritance:

TableLayoutPanel控件不支持Windows窗体设计器中的可视inheritance。 派生类中的TableLayoutPanel控件在设计时显示为“已锁定”。

行为不仅限于TableLayoutPanel ,并且记录了一些其他控件也不支持基本表单的可视inheritance,并且无论您使用哪些修饰符,它都将始终为只读并在inheritance表单中显示为已锁定:

并非所有控件都支持基本表单的可视inheritance。 以下控件不支持本演练中描述的方案:

  • WebBrowser
  • ToolStrip
  • ToolStripPanel
  • TableLayoutPanel
  • FlowLayoutPanel
  • DataGridView

无论您使用哪些修饰符(private,protected或public),inheritanceforms的这些控件都是只读的。