private void LoadPage_DoWork(object sender, DoWorkEventArgs e) { BeginInvoke(new MethodInvoker(delegate { progressBar.Visible = true; progressBar.Value = 0; label1.Text = (pageIndex + 1) + "/" + pages; panelPage.Visible = true; button1.Enabled = false; button2.Enabled = false; button_search.Enabled = false; })); var animes = animeEntries.Skip(pageIndex * entriesPerPage).Take(entriesPerPage); LoadPage.ReportProgress(10); BeginInvoke(new MethodInvoker(delegate { panelEntry.Controls.Clear(); })); float progress = 10; float step = 90f / animes.Count(); foreach (var a in animes) { AnimeEntry entry = new AnimeEntry(a); entry.Dock = DockStyle.Top; BeginInvoke(new MethodInvoker(delegate { entry.Visible = false; panelEntry.Controls.Add(entry); entry.BringToFront(); // entry.BringToFront(); - to add controls in correct order entry.Visible = true; })); System.Threading.Thread.Sleep(100); progress += step; LoadPage.ReportProgress((int)progress); } BeginInvoke(new MethodInvoker(delegate { progressBar.Visible = false; button1.Enabled = true; button2.Enabled = true; button_search.Enabled = true; })); }