如何在c#中将控件的背景颜色设置为所需的背景控件?

时间:2013-11-01 10:41:52

标签: c# winforms controls

我的表单设置为以下属性:

FormBorderStyle = None;
BackColor = 64, 0 64;
Transparency Key = 64, 0 64;

然后,我将rectangleShape1和label1放入我的表单中。

rectangleShape1 属性:

BackColor = SaddleBrown;

label1 属性:

BackColor = transparent;

我希望label1.BackColor = transparent;位于rectangleShape1的BackColor中,而不是我的FORM的BackColor。可能吗?我该怎么做?感谢。

修改

我希望label1的背景颜色是透明的,因为我想查看rectangleShape1的Backgroundimage。

2 个答案:

答案 0 :(得分:1)

将控件的BackColor设置为Color.Transparent表示它使用其父背景。

以下是您的选择:

  1. 假设rectangleShape1是某种控件,您可以将其作为标签的父级:

    label1.BackColor = Color.Transparent;
    label1.Parent = rectangleShape1;
    

    但是,这会将标签的范围限制为矩形。

  2. 创建自己的transparent label

答案 1 :(得分:0)

Label和大多数控件中都不存在透明,除非您实际覆盖on_paint。透明只需设置父容器的颜色:

Label1.BackColor = Color.Transparent

=

Label1.BackColor = Label1.Parent.BackColor

只需将父容器设置为您的矩形,假设它是一个容器,您就可以了。否则,您需要派生一些类来制作矩形容器。

编辑: 如果你想要其他类似行为的公然证据,那么创建一个组合框,在里面添加标签然后改变字体大小,族等等,并检查标签自己更改。甚至认为他们指定了喜欢的父组合接管。为了防止这种行为只是将一个面板放在组框中并将所有标签拖入内部然后执行相同操作,您将看不到任何事情。

有很少的属性表现得像那样,不幸的是,这些年来侥幸发现了这一点。