我目前正在编写一个自定义设计的标签控件。我创建了自己的控件而不是所有者 - 绘制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

有帮助吗?

解决方案

看看这个: http://saftsack.fs.uni-bayreuth.de/~dun3/archives/creating-a-transparent-panel-in-net/108.html

最后我在.NET Windows Forms中,你不需要做一些这些伪造的黑客工具来获得透明度。我不确定他们是否在过去的3年内改变了它,但我确实记得做过这样的事情。我会先尝试不先画一个背景。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top