今天搞了一天终于搞定
是这样的,我写了一个自定义的控件然后设置为背景透明,然后用Control.Add()方法添加到一个已有的控件,2个以内没问题,当超过两个后就会提示创建句柄错误,郁闷到死,怎么搞就是搞不好,MSDN提供的方法如下:
-
定位控件类的构造函数。
-
在构造函数中调用窗体的 SetStyle。
Visual BasicSetStyle(ControlStyles.SupportsTransparentBackColor, True)
C#SetStyle(ControlStyles.SupportsTransparentBackColor, true);
J#SetStyle(ControlStyles.SupportsTransparentBackColor, true);
这将使控件能够支持透明背景色。
-
在步骤 1 中添加的代码行下再添加下面的代码行。这会将控件的 BackColor 设置为 Transparent。
Visual BasicMe.BackColor = Color.Transparent
C#this.BackColor = Color.Transparent;
J#this.set_BackColor(Color.get_Transparent());
注意,也可以通过使用 FromArgb 方法创建半透明颜色。有关颜色的更多信息,请参见 使用托管图形类。
但是这是无济于事的,因为当我动态添加超过3个这样的自定义控件后就会报创建句柄错误。郁闷
终于有幸在网上看到一篇文章
其SetStyle函数里面的参数要这样设置才行:
SetStyle(ControlStyles.SupportsTransparentBackColor
| ControlStyles.UserPaint
| ControlStyles.AllPaintingInWmPaint
| ControlStyles.Opaque, true);
BackColor = Color.Transparent;
目前暂不知道为什么要这样设置
希望对您有用,多谢阅读!