如何创建一个可以删除其他控件的UserControl?

时间:2010-11-21 05:55:40

标签: c# .net winforms user-controls windows-forms-designer

在WinForms中,如何创建一个UserControl,当我放入表单时,我可以通过从工具箱中拖动它们来添加其他控件,就像所有容器控件一样(面板,组合框)等)?我试图通过将控件放在我的控件中来添加控件,但是当我移动我的控件时,我添加的控件保持在他们所在的位置,如果不是我的控制我会使用Panel(其他控件将与面板一起移动。

1 个答案:

答案 0 :(得分:21)

Panel控件不同,例如,UserControl放置在另一个表单上后,它不会充当容器控件。在设计UserControl本身时,有完整的设计时支持,但是它的默认行为不允许它在放置在另一个表单上之后充当构件控件。这就是您无法通过从工具箱中拖动其他控件来添加其他控件的原因。

要将此类行为添加到UserControl,您需要将DesignerAttribute添加到自定义UserControl类的定义中。例如:

using System.ComponentModel;
using System.ComponentModel.Design;

[Designer("System.Windows.Forms.Design.ParentControlDesigner, System.Design", typeof(IDesigner))]
public class MyUserControl : System.Windows.Forms.UserControl
{
    //...your code here
}

(请参阅相关的MSDN文章以供进一步阅读。)


如果要在UserControl内为嵌套控件实现完整的设计器支持,则稍微困难一些。有关更全面的讨论,请参阅CodeProject上的this article