在启动一个新窗口的时候,类似的代码如下
? ?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;
????????????}
????????}