在启动一个新窗口的时候,类似的代码如下
DetectionConfirm ii = new DetectionConfirm();
if (ii.ShowDialog() == DialogResult.OK)
{
PowerUtil.ShowPower(this.panel1);
this.Show();
}
这个新窗体可能图片资源比较多,以及需要通过panel做透明处理,那么在硬件性能较低的情况下,可能会有明显的闪烁。
解决方法就是让窗口延时显示
先托个Timer到设计器里,时间间隔设成20毫妙就行了。
在主窗口构造函数未尾添加:
this.Visible = false;
this.Opacity = 0;
timer1.Start();
计时器函数:
void timer1_Tick(object sender, EventArgs e)
{
timer1.Stop();
this.Visible = true;
this.Opacity = 1;
}
参考:
http://bbs.csdn.net/topics/380212250
http://topic.csdn.net/u/20100921/14/724f3ca4-c083-42b9-b8c3-35bec4db9cbd.html
后面又发现一种神奇的方法,在窗体的cs文件中加入下面代码即可
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
cp.ExStyle |= 0x02000000;
return cp;
}
}