C# 将继承的控件添加到面板

C# 将继承的控件添加到面板,c#,.net,visual-studio,winforms,C#,.net,Visual Studio,Winforms,我有一个带有两个按钮的基本表单(例如“确定”和“取消”)。我想使用一个表格布局面板,其中有两个按钮。子窗体应该能够向表中添加更多控件,并通过设计器修改其布局本身 到目前为止,我还不能让它工作。我尝试了以下方法: 将TableLayoutPanel添加到子窗体。设计师拒绝将这两个按钮添加到面板中 在基本表单中添加TableLayoutPanel。无法从子窗体向面板添加控件 在基本表单中,您必须为TableLayoutPanel和您想在子表单中更改的任何其他控件设置property Modifie

我有一个带有两个按钮的基本表单(例如“确定”和“取消”)。我想使用一个
表格布局面板
,其中有两个按钮。子窗体应该能够向表中添加更多控件,并通过设计器修改其布局本身

到目前为止,我还不能让它工作。我尝试了以下方法:

  • TableLayoutPanel
    添加到子窗体。设计师拒绝将这两个按钮添加到面板中
  • 在基本表单中添加
    TableLayoutPanel
    。无法从子窗体向面板添加控件

在基本表单中,您必须为TableLayoutPanel和您想在子表单中更改的任何其他控件设置property Modifiers=Protected。

由于近一年来一直没有收到答案,而WindowsForms正慢慢输给WPF,所以答案似乎是“不要这样做”.

无法在派生类中编辑
TableLayoutPanel
的原因是您试图使用WinForms的一个称为“可视继承”的功能。不幸的是,
TableLayoutPanel
不支持可视继承:

(在页面底部阅读)


这就是为什么它在继承的控件中被阻止的原因。我不知道他们为什么不支持这个功能,但我最近遇到了同样的问题,最后不得不用另一种方法解决这个问题。

我从来没有让设计师很好地对表单进行分类,你可能需要使用代码来添加按钮。是的,正如@Ian Ringrose所说,所设计的类不会起作用,hou将不断地从派生类中移动自动生成的代码。是的,WPF和朋友们对于这一切都有一个更好的故事。记住GDI和所有它穿的像WinForms一样的衣服都比你的男人年龄大,并且有设计上的缺陷要匹配!而且CodeDOM方法还没有获得支持……在VS2012、.NET4.0中对我有效;带有面板的祖先,面板的
修饰符
设置为
受保护
(在设计时)。生成/保存,然后编辑子代并将项添加到面板-无问题。