在Winforms自定义UserControl上启用设计图面

Mar*_*kus 2 .net c# user-controls custom-controls winforms

我尝试在C#中创建一个自定义用户控件来处理添加到其中的其他控件.自定义控件由两个面板组成.我想要实现的是,如果在设计模式下将另一个控件拖动到我的用户控件(或在运行时以编程方式添加),我希望将该控件放在其中一个面板上.

我试图处理OnControlAdded事件但是没有做到这一点......

Bil*_*llW 5

Markus写道:"如果在设计模式下将另一个控件拖动到我的用户控件(或在运行时以编程方式添加),我希望将该控件放在其中一个面板上."

我要解释上面这意味着你在设计时拖拽控制,成为一个子控件的用户控件的两个内部面板之一:如果intrepretation是错误的:请忽略接下来:)

另外,为了避免混淆:当您在设计时放置在表单上的UserControl实例中观察到面板或其他"容器"控件时,您完全没有"消耗"或"吞下"拖动您可能期望控制:实际上您甚至无法单独选择它们:它们被添加到UserControl的ControlCollection中.

幸运的是,在设计时拖放情况下,有你可以学习和亨利分钟CodeProject上使用了良好稳固的代码示例:设计嵌套控件:这篇文章将告诉你如何从ParentControlDesigner继承,这样子控件在设计时,UserControl的容器可以按照您要查找的方式充当容器.

如果您想在运行时(程序员)想要控件的使用者...假设他们没有源代码,那么他们将您的UserControl作为"黑盒子"进行交互,只能"看到"属性,和方法,可用事件等,您已经公开...来控制添加控件的位置:您决定如何希望消费者访问面板.您可以通过UserControl的公共属性"直接"将它们作为对象公开,或者您可以只公开一个Public方法来为每个面板添加控件.