我有一个复合控件,包括一个组框控件。问题是它涵盖了放置在此复合控件之上的控件。即使我将新控件发送到顶部,所以它们应该是可见的,但它们不是。
当我只使用组合框时,当然它会通过各种内容进行显示,因此您可以看到包含的控件,只是组框所示。
我是否必须做一些事情才能在复合控件中获得相同的效果/行为?
编辑:左侧显示设计器中的控件,右侧显示运行时的控件。
Quintin可能是正确的,并且设计器对控件的支持有问题,也就是说,您创建了ControlA,并通过在设计时添加按钮将其扩展到ControlB。当您实施ControlB时,该按钮不可见。
你能在运行时使用断点/断言/等验证:`
ChildButton
存在。ChildButton
是CompositeControl.Controls
的成员。ChildButton
位置是CompositeControl
的“视野内”。ChildButton
是可见的。如果是我,我会在控件的构造函数中设置一个断点,并进入InitializeComponent()
,检查所有内容是否已创建并正确添加。如果ChildButton
存在,并且在CompositeControl.Controls
中有一个参考,并且它的位置在视野中,那么我无法解释为什么它没有显示。
如果您希望自定义控件的行为类似于容器(就像组合框通常那样),那么您需要让控件和设计者知道如何处理它。
请记住实现IContainerControl
并使用适当的设计器属性为设计器容器支持IE装饰对象:
[Designer("System.Windows.Forms.Design.ParentControlDesigner,System.Design", typeof(System.ComponentModel.Design.IDesigner))]