C# 尽管有WS_EX_COMPOSIET标志和双缓冲属性,调整大小后仍闪烁

C# 尽管有WS_EX_COMPOSIET标志和双缓冲属性,调整大小后仍闪烁,c#,.net,winforms,flicker,aero,C#,.net,Winforms,Flicker,Aero,我有一个TableLayoutPanel,我在其中使用布局中的控件进行一些拖放操作。不幸的是,控件在拖放操作后闪烁。我在所有控件和许多其他方面都尝试了DoubleBuffered=true。 我还尝试了以下解决方案:。 实际上,它与前面提到的CreateParams配合得很好。但只有在我调整窗体大小之前。 windows似乎在调整大小后忘记了WS_EX_COMPOSIET标志。 它仅与aero主题一起出现。如果没有aero,则在调整大小后保留CreateParams的设置 打开aero主题时是否

我有一个TableLayoutPanel,我在其中使用布局中的控件进行一些拖放操作。不幸的是,控件在拖放操作后闪烁。我在所有控件和许多其他方面都尝试了DoubleBuffered=true。 我还尝试了以下解决方案:。 实际上,它与前面提到的CreateParams配合得很好。但只有在我调整窗体大小之前。 windows似乎在调整大小后忘记了WS_EX_COMPOSIET标志。 它仅与aero主题一起出现。如果没有aero,则在调整大小后保留CreateParams的设置


打开aero主题时是否有任何方法防止闪烁?

在表单resize Events(onResizeBegin&on ResizeEnd)上,使用以下代码:

protected override void OnResizeBegin(EventArgs e) 
 {
    SuspendLayout();
    base.OnResizeBegin(e);
 }

protected override void OnResizeEnd(EventArgs e) 
 {
    ResumeLayout();
    base.OnResizeEnd(e);
 }

这是我做的第一件事。不幸的是没有成功。我使用嵌套较少的控件获得了可接受的结果。您可以尝试设置
WS\u EX\u LAYERED
标志。另见: