C# form 中使用backgroundImage或者控件过多而引起的闪烁
造成原因不同,但是解决方法类似:
[DllImport("user32.dll")]
static extern bool LockWindowUpdate(IntPtr hWndLock);
LockWindowUpdate这个方法用来暂停某个控件的展示。
我们可以在控件绘制之前暂停展示,在绘制完毕之后再显示出来。这样就不会出现频繁而疯狂的刷新闪烁了。
例子:当缩放的时候解决闪烁问题:
解决后的现象是,整个form1只出现一次闪烁,没有了疯狂的刷新了。
void form1_ResizeBegin(object sender, EventArgs e)
{
LockWindowUpdate(this.Handle);
}
{
LockWindowUpdate(this.Handle);
}
void form1_ResizeEnd(object sender, EventArgs e)
{
LockWindowUpdate(IntPtr.Zero);
}
{
LockWindowUpdate(IntPtr.Zero);
}