我目前正在编写一个自定义设计的选项卡控件。我创建了自己的控件,而不是自己绘制的TabControl,因为我认为它会更快、更灵活。我的选项卡控件在VS2008选项卡控件之后设置自身样式;即,当选定某个选项卡时,该选项卡的一部分位于其他未选定选项卡的前面。
我的选项卡控件由一个包含所有TabButton对象的面板组成,这些对象本身就是实际的选项卡。我将TabButton设置为透明,如下所示:
public TabButton()
{
...
SetStyle(ControlStyles.SupportsTransparentBackColor | ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer, true);
UpdateStyles();
this.BackColor = Color.Transparent;
}然而,当该选项卡被选择并且在另一个选项卡之前时,未选择选项卡中本应出现在所选选项卡部分之后的部分不会被呈现。它是标准的SystemColors.Control颜色,用于填充选定按钮的剪裁矩形的其余部分。
如何在自定义控件中实现适当的透明度?
另外: TabButton继承了控件,这就是为什么我需要使用SetStyle才能使用透明度。
-Eric史密斯
发布于 2009-10-22 13:58:05
看看这个:http://saftsack.fs.uni-bayreuth.de/~dun3/archives/creating-a-transparent-panel-in-net/108.html
上一次我使用.NET Windows Forms时,并不是很明显你需要做一些伪装的技巧来让透明度工作。我不确定他们是否在过去的三年里改变了它,但我确实记得做过这样的事情。我会试着先不画背景。
https://stackoverflow.com/questions/1605206
复制相似问题