复合控制的透明度?

问题描述 投票:0回答:2

我有一个复合控件,包括一个组框控件。问题是它涵盖了放置在此复合控件之上的控件。即使我将新控件发送到顶部,所以它们应该是可见的,但它们不是。

当我只使用组合框时,当然它会通过各种内容进行显示,因此您可以看到包含的控件,只是组框所示。

我是否必须做一些事情才能在复合控件中获得相同的效果/行为?

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

alt text

c# .net winforms gdi+
2个回答
0
投票

Quintin可能是正确的,并且设计器对控件的支持有问题,也就是说,您创建了ControlA,并通过在设计时添加按钮将其扩展到ControlB。当您实施ControlB时,该按钮不可见。

你能在运行时使用断点/断言/等验证:`

  1. ChildButton存在。
  2. ChildButtonCompositeControl.Controls的成员。
  3. ChildButton位置是CompositeControl的“视野内”。
  4. ChildButton是可见的。

如果是我,我会在控件的构造函数中设置一个断点,并进入InitializeComponent(),检查所有内容是否已创建并正确添加。如果ChildButton存在,并且在CompositeControl.Controls中有一个参考,并且它的位置在视野中,那么我无法解释为什么它没有显示。


0
投票

如果您希望自定义控件的行为类似于容器(就像组合框通常那样),那么您需要让控件和设计者知道如何处理它。

请记住实现IContainerControl并使用适当的设计器属性为设计器容器支持IE装饰对象:

[Designer("System.Windows.Forms.Design.ParentControlDesigner,System.Design", typeof(System.ComponentModel.Design.IDesigner))]
© www.soinside.com 2019 - 2024. All rights reserved.