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

Jua*_*uan 13 .net c# user-controls windows-forms-designer winforms

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

Cod*_*ray 21

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

要将此类行为添加到a 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
}
Run Code Online (Sandbox Code Playgroud)

(有关进一步阅读,请参阅相关的MSDN文章.)


如果你想为你内部的嵌套控件实现完整的设计器支持,那就UserControl稍微困难了.有关更全面的讨论,请参阅有关CodeProject的这篇文章.