可视化继承 - 将设计器中的控件添加到TableLayoutPanel

时间:2018-04-18 07:55:25

标签: c# .net winforms inheritance

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

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

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

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

P_Content是一个很大的空白区域。

Screenshot

1 个答案:

答案 0 :(得分:3)

您似乎已在Panel中托管了TableLayoutPanel。根据{{​​3}},您应避免TableLayoutPanel的视觉继承:

  

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

行为不仅限于TableLayoutPanel,而且documentations某些其他控件也不支持基本表单的可视继承,并且始终是只读的,并且在继承的表单中显示为已锁定无论您使用何种修饰符:

  

并非所有控件都支持基本表单的可视继承。该   以下控件不支持此处描述的方案   演练:

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

继承形式的这些控件始终是只读的   您使用的修饰符(私有,受保护或公共)。