C# form 中使用backgroundImage或者控件过多而引起的闪烁

造成原因不同,但是解决方法类似:

 


[DllImport(
"user32.dll")]
static extern bool LockWindowUpdate(IntPtr hWndLock);

 

 

LockWindowUpdate这个方法用来暂停某个控件的展示。

我们可以在控件绘制之前暂停展示,在绘制完毕之后再显示出来。这样就不会出现频繁而疯狂的刷新闪烁了。

例子:当缩放的时候解决闪烁问题:

 解决后的现象是,整个form1只出现一次闪烁,没有了疯狂的刷新了。

void form1_ResizeBegin(object sender, EventArgs e)
{
        LockWindowUpdate(
this.Handle);
}

 

 

 

void form1_ResizeEnd(object sender, EventArgs e)
{
            LockWindowUpdate(IntPtr.Zero);
}

 

 

posted on 2011-02-17 17:46  Comet  阅读(2831)  评论(0编辑  收藏  举报

导航