第一步.
在构造函数里面添加这句代码
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
cp.ExStyle |= 0x02000000;
return cp;
}
}
第二步
在加载事件里面 添加下面代码,效果是: 在panel 里面的控件都将透明显示
this.panel1.BackColor = Color.Transparent;//将Panel设为透明
this.panel1.Parent = this;//将panel父控件设为背景图片控件
this.panel1.BringToFront();//将panel放在前面
this.DoubleBuffered=true; //开启双缓存处理.
//完成上面两步,基本上满足一部分透明不闪烁问题.
第三步, 如果是在线程操作窗体控件出现闪烁问题.
其中在加载事件中添加的这句代码
Control.CheckForIllegalCrossThreadCalls = false; 并么用,他只是捕捉线程操作控件错误情况不做处理. 只是让窗口
成为一种假死状态.线程与窗体线程互不影响.所以闪烁情况不稳定,.
解决方法 在线程里面重新开一个窗口线程.将你要执行的代码放入里面
Thread t = new Thread(() =>
{
for (int i = 0; i < 100; i++)
{
本内容试读结束,登录后可阅读更多
下载后可阅读完整内容,剩余1页未读,立即下载