我正在开发C#Winforms应用程序。 GUI部分很大(每个表单有200多个控件)。直到最近,我还遇到了闪烁的大问题。通过使用主面板上的WS_EX_COMPOSITED可以控制该问题:
public class MainPanel : Panel {
protected override CreateParams CreateParams {
get {
CreateParams cp = base.CreateParams;
cp.ExStyle |= 0x02000000; // WS_EX_COMPOSITED
return cp;
}
}
...
不幸的是,应用WS_EX_COMPOSITED有一些副作用。一个问题是,使用控件似乎不再起作用。仅当不使用WS_EX_COMPOSITED时,以下代码才有效:
Graphics gr = myControl.CreateGraphics();
gr.DrawLine(new Pen(Color.Red, 10), 0,0 , 1000, 100);
除了绘制控件外,我还是希望继续使用WS_EX_COMPOSITED。