我目前正在编写一个自定义设计的标签控件。我创建了自己的控件而不是所有者 - 绘制TabControl,因为我认为它更快,更灵活。在VS2008选项卡控件之后,我的选项卡控件自行设置样式;也就是说,当选择一个标签时,该标签的一部分位于其他未选择的标签之前。
我的标签控件包含一个Panel,其中包含我的所有TabButton对象,这些对象本身就是实际标签。我将TabButton设置为透明,如下所示:
public TabButton()
{
...
SetStyle(ControlStyles.SupportsTransparentBackColor | ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer, true);
UpdateStyles();
this.BackColor = Color.Transparent;
}
但是,选择选项卡并在另一个选项卡前面时,未显示应显示在所选选项卡部分后面的未选定选项卡部分。它是标准SystemColors.Control
颜色,填充所选按钮的剪切矩形的其余部分。
如何在自定义控件中实现正确的透明度?
另外:TabButton继承了Control,这就是我需要使用SetStyle
才能使用透明度的原因。
-Eric Smith
答案 0 :(得分:1)
看看这个:http://saftsack.fs.uni-bayreuth.de/~dun3/archives/creating-a-transparent-panel-in-net/108.html
最后我在.NET Windows Forms中,你不需要做一些这些伪造的黑客工具来获得透明度。我不确定他们是否在过去的3年内改变了它,但我确实记得做过这样的事情。我会先尝试不先画一个背景。