我有FlowLayoutPanel
加载了我创建的一堆用户控件。
这是usercontrol(我们将其命名为ColorBox
),它只是一个带有标签的图像(加载在Panel
上)。
我将这些加载到FlowLayouPanel
中,这是最终结果:
我的问题是当有很多ColorBox(300-400)时加载非常慢。 到目前为止,我正在调用在单独的线程中加载项目的函数,因此UI仍然可以正常运行。
这是我用来加载的功能,我描述了我的应用程序,这是需要花费大量时间的那个:
private void LoadColorBox(List<ColorBox> cBoxList)
{
flowLayoutPanel1.SuspendLayout();
foreach (var cBox in cBoxList)
flowLayoutPanel1.Controls.Add(cBox);
flowLayoutPanel1.ResumeLayout();
}
需要花费大量时间的另一个函数是ColorBox
对象的构造函数,尤其是我检查我使用的Image
是否存在然后将其放在我的面板上。
Image img;
using (var bmpTemp = new Bitmap(imgPath))
{
img = new Bitmap(bmpTemp);
}
panelColor.BackgroundImage = img;
panelColor.BackgroundImageLayout = ImageLayout.Stretch;
我可以做些什么来改善表现?
答案 0 :(得分:0)
您应该使用AddRange()而不是循环Add()。
private void LoadColorBox(List<ColorBox> cBoxList)
{
flowLayoutPanel1.Controls.AddRange(cBoxList)
}
我不知道你何时处理这个问题,但如果你在表单的构造函数中执行此类操作而不是Load(或其他一些)事件,那么你也可以获得一些时间。