2009-10-07 61 views
0

我有一个包含groupbox控件的复合控件。问题是它覆盖了放置在这个复合控件之上的控件。即使我将新控件发送到顶端,所以它们应该可见,但它们不是。复合控件的透明度?

当我使用groupbox的时候,当然会通过事物来展示,所以您可以看到包含在控件中的控件,只是由groupbox概述。

我需要在复合控件中做些什么来获得相同的效果/行为吗?

编辑:左侧显示在设计器中的控件,右侧显示在运行时的控件。

alt text http://i38.tinypic.com/dxdc2f.png

+0

你可以截取设计师的截图,显示你的控件应该在哪里?如果它们隐藏起来,你可以画一个他们*应该*可见的地方的轮廓。这可能有助于为我们其他人澄清您的问题。 – 2009-10-07 18:21:37

+0

我添加了一张图片。 – 2009-10-07 19:56:05

+0

如果您将按钮移动到控件边缘 - 按钮发生了什么变化?如果它在控制范围外的部分仍然可见,那么您的控件不会像容器那样工作。但是,如果它被裁剪掉 - 那么你的控制就像一个控制器 - 至少在设计师中。 – 2009-10-09 07:06:26

回答

0

有可能廷是正确的,有些事情是与设计师的支持你的控制脚麻,也就是说,您已经创建了ControlA,并在设计时通过添加按钮将其扩展到ControlB。当您安装ControlB时,该按钮不可见。

您可以验证在运行时,使用断点/断言/ etc中:`

  1. ChildButton存在。
  2. ChildButtonCompositeControl.Controls的成员。
  3. ChildButton位置在CompositeControl的'in-view'中。
  4. ChildButton可见。

如果是我,我会设置一个断点在控制的构造,和骑入InitializeComponent(),检查是否一切被创建并正确添加。如果ChildButton存在,并且在CompositeControl.Controls中有参考,并且其位置在视图中,则我无法解释为什么它不显示。

+0

谢谢,如果我没有错,你认为ChildButton是复合控件的一部分?因为它不是。复合控件由2个控件组成:1个复选框,1个组框。但后来当我使用这个复合控件并在其上放置一些控件时,作为用户,控件仅在设计时显示在顶部。 – 2009-10-07 21:29:54

+0

是的,我知道你的意思。我开始认为设计师对你的控制的支持被打破了。当您在复合控件初始化时逐步执行代码时,请检查所有内容应如您所期望的那样。作为最后的手段,您可以尝试在运行时将按钮添加到控件中,以验证它是否正确显示。如果是这样,那么你知道你有一个设计师问题。 – 2009-10-08 00:43:07

+0

谢谢,如果这是一个设计师问题,它会被修复吗? – 2009-10-08 16:14:12

0

如果你的意思,你想自定义控件的行为类似于一个容器(如组框一般不会),那么你需要让控制和设计师知道应该如何处理。

记住实施IContainerControl,并与设计师容器支持IE适当的设计属性修饰的对象:

[Designer("System.Windows.Forms.Design.ParentControlDesigner,System.Design", typeof(System.ComponentModel.Design.IDesigner))] 
+0

谢谢,这也很有用。但是对于我的问题,它的行为就像一个groupbox,但它覆盖了它内部的控件。我可以在设计器中看到它们,但是当您运行该工具时,它们会出现在复合控件的后面。 – 2009-10-07 17:25:07