我尝试在C#中创建一个自定义用户控件,用于处理添加到其中的其他控件。自定义控件由两个面板组成。我试图实现的是,如果在设计模式下将另一个控件拖到我的用户控件上(或在运行时以编程方式添加),我希望将该控件放在其中一个面板上。
我试图处理OnControlAdded事件,但这并没有起到作用...
发布于 2010-01-13 21:32:08
Markus写道:“如果在设计模式下将另一个控件拖到我的用户控件上(或在运行时以编程方式添加),我希望将该控件放在其中一个面板上。”
我将上面的解释解释为您希望设计时拖动的控件成为UserControl的两个内部面板之一的子控件:如果这种解释是错误的:请忽略以下内容:)
此外,为了避免混淆:当您观察到在设计时放置在窗体上的UserControl实例中的面板或其他“容器”控件不会像您预期的那样“消费”或“吞噬”控件时,您是完全正确的:事实上,您甚至不能单独选择它们:它们被添加到用户控件的ControlCollection中。
对您来说幸运的是,在设计时拖放的情况下,有一个很好的可靠的代码示例,您可以在CodeProject上学习和使用,由Henry Minute编写:Designing Nested Controls:那篇文章将向您展示如何从ParentControlDesigner继承,以便在设计时作为UserControl容器的子控件可以按照您所寻找的方式作为容器运行。
如果你想要在运行时(程序员)使用你的控件...假设他们没有源代码,所以他们像“黑盒”一样与你的UserControl交互,只能“看到”属性、方法、可用事件等,你已经公开了……控制添加的控件的放置位置:您需要决定希望使用者如何访问面板。您可以通过UserControl的公共属性将它们“直接”公开为对象,也可以仅公开一个用于为每个面板添加控件的公共方法。
发布于 2010-01-13 20:57:39
为什么不直接将它拖到面板中,或者给其中一个面板一个公共访问器,然后直接向该面板添加所有的编程操作呢?
https://stackoverflow.com/questions/2056703
复制相似问题