C# 为什么绘制带有复杂用户控件的FlowLayoutPanel需要花费很长时间?
我使用“FlowLayoutPanel”来存储一个复杂的GUI。 此结构包含两种类型的用户控件:C# 为什么绘制带有复杂用户控件的FlowLayoutPanel需要花费很长时间?,c#,.net,user-controls,windows-forms-designer,flowlayoutpanel,C#,.net,User Controls,Windows Forms Designer,Flowlayoutpanel,我使用“FlowLayoutPanel”来存储一个复杂的GUI。 此结构包含两种类型的用户控件: “S”简单U.C(恒定尺寸) “C”是另一个FlowLayoutPanel,可以将这些内容作为child键入。。等等 当我有这种结构时: 1.C C: 1.s 2.C 渲染此控件大约需要15秒, 每次该控件Visible更改时,GUI都会被卡住15秒以上,直到其呈现整个组件为止 *注1:复杂的“C”控件是自动调整大小的,其中包含FlowLayoutPanel。添加Child时,所有“内部”C组
将渲染时间从15秒减少到0.2秒:)FLP中总共有多少个控件?5个简单,3个复杂。8个总数。完全按照我在问题中写的顺序。渲染8个控件不需要15秒。时间必须到其他地方。为什么要在滚动中执行无效?我觉得很奇怪。我使用了配置文件r在显示之前抓拍并在显示后停止。它显示“设置可见”花费了87.3%的时间找到它:那么你的控件/FLP是否使用透明度?
1.S
2.S
public FlowLayoutPanelEx()
: base()
{
this.SetStyle(ControlStyles.UserPaint, true);
this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
}
protected override void OnScroll(ScrollEventArgs se)
{
this.Invalidate();
base.OnScroll(se);
}
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
cp.ExStyle |= 0x02000000; // WS_CLIPCHILDREN
return cp;
}
}
}