2010-09-15 78 views

回答

53

这只对窗体本身产生影响,而不是子控件。如果你有很多它们,那么他们需要轮流自己绘画的时间就会变得明显,它会留下一个矩形的洞,在这个洞中控制不会被填满,直到儿童控制器开始转动。

你需要对付这个问题是双缓冲整个表格的控件。自从Windows XP使WS_EX_COMPOSITED风格标志可用之后,这是一个可用的选项。粘贴到您的形式将其打开:

protected override CreateParams CreateParams { 
    get { 
    CreateParams cp = base.CreateParams; 
    cp.ExStyle |= 0x02000000; // Turn on WS_EX_COMPOSITED 
    return cp; 
    } 
} 

它不加快画可言,但形式的延迟后,卡在屏幕上。消除可见的油漆工件。确定延迟需要不使用控件。你可以通过使用OnPaint方法来绘制'控件',并使OnMouseClick事件明白用户点击'控件'的方式。

+0

WS_EX_COMPOSITED仅适用于win7/vista下的经典主题,不适用于航空主题。有人知道在这种情况下的解决方案? – KevinBui 2011-12-18 17:05:04

+4

@Dhanhan - 这对Aero来说很有效 – 2012-06-07 22:30:18

+0

它像一个魅力一样工作(不是指Windows 8的魅力,但我希望它能在Windows 8上工作,如果需要的话,也可以在XP上工作)。 – 2012-08-21 00:06:48