我有一个包含groupbox控件的复合控件。问题是它覆盖了放置在这个复合控件之上的控件。即使我将新控件发送到顶端,所以它们应该可见,但它们不是。复合控件的透明度?
当我使用groupbox的时候,当然会通过事物来展示,所以您可以看到包含在控件中的控件,只是由groupbox概述。
我需要在复合控件中做些什么来获得相同的效果/行为吗?
编辑:左侧显示在设计器中的控件,右侧显示在运行时的控件。
alt text http://i38.tinypic.com/dxdc2f.png
我有一个包含groupbox控件的复合控件。问题是它覆盖了放置在这个复合控件之上的控件。即使我将新控件发送到顶端,所以它们应该可见,但它们不是。复合控件的透明度?
当我使用groupbox的时候,当然会通过事物来展示,所以您可以看到包含在控件中的控件,只是由groupbox概述。
我需要在复合控件中做些什么来获得相同的效果/行为吗?
编辑:左侧显示在设计器中的控件,右侧显示在运行时的控件。
alt text http://i38.tinypic.com/dxdc2f.png
有可能廷是正确的,有些事情是与设计师的支持你的控制脚麻,也就是说,您已经创建了ControlA,并在设计时通过添加按钮将其扩展到ControlB。当您安装ControlB时,该按钮不可见。
您可以验证在运行时,使用断点/断言/ etc中:`
ChildButton
存在。ChildButton
是CompositeControl.Controls
的成员。ChildButton
位置在CompositeControl
的'in-view'中。ChildButton
可见。如果是我,我会设置一个断点在控制的构造,和骑入InitializeComponent()
,检查是否一切被创建并正确添加。如果ChildButton
存在,并且在CompositeControl.Controls
中有参考,并且其位置在视图中,则我无法解释为什么它不显示。
谢谢,如果我没有错,你认为ChildButton是复合控件的一部分?因为它不是。复合控件由2个控件组成:1个复选框,1个组框。但后来当我使用这个复合控件并在其上放置一些控件时,作为用户,控件仅在设计时显示在顶部。 – 2009-10-07 21:29:54
是的,我知道你的意思。我开始认为设计师对你的控制的支持被打破了。当您在复合控件初始化时逐步执行代码时,请检查所有内容应如您所期望的那样。作为最后的手段,您可以尝试在运行时将按钮添加到控件中,以验证它是否正确显示。如果是这样,那么你知道你有一个设计师问题。 – 2009-10-08 00:43:07
谢谢,如果这是一个设计师问题,它会被修复吗? – 2009-10-08 16:14:12
如果你的意思,你想自定义控件的行为类似于一个容器(如组框一般不会),那么你需要让控制和设计师知道应该如何处理。
记住实施IContainerControl
,并与设计师容器支持IE适当的设计属性修饰的对象:
[Designer("System.Windows.Forms.Design.ParentControlDesigner,System.Design", typeof(System.ComponentModel.Design.IDesigner))]
谢谢,这也很有用。但是对于我的问题,它的行为就像一个groupbox,但它覆盖了它内部的控件。我可以在设计器中看到它们,但是当您运行该工具时,它们会出现在复合控件的后面。 – 2009-10-07 17:25:07
你可以截取设计师的截图,显示你的控件应该在哪里?如果它们隐藏起来,你可以画一个他们*应该*可见的地方的轮廓。这可能有助于为我们其他人澄清您的问题。 – 2009-10-07 18:21:37
我添加了一张图片。 – 2009-10-07 19:56:05
如果您将按钮移动到控件边缘 - 按钮发生了什么变化?如果它在控制范围外的部分仍然可见,那么您的控件不会像容器那样工作。但是,如果它被裁剪掉 - 那么你的控制就像一个控制器 - 至少在设计师中。 – 2009-10-09 07:06:26