Привет,
У меня есть небольшая проблема с мерцанием окна при его отображении. Точнее даже не самого окна а при динамической загрузке дочернего контрола.
У него Dock = Fill. Содержимого у этого контрола много и я вижу как он сначала прорисовывается не с Dock = Fill а потом заполняет родительский элемент. Выглядит это примерно следующим образом.
Главная форма имеет панель которая является родительским контейнером для моего динамического контрола. При определенном действии (например нажатии на кнопку) создается контрол и обновляется панель:
private void btnDisplayControl_Click(object sender, EventArgs e)
{
SlowlyLoadedControl scc = new SlowlyLoadedControl();
this.SuspendLayout();
pnlControlHolder.Controls.Clear();
pnlControlHolder.Controls.Add(scc);
this.ResumeLayout();
}
У меня есть такой контрол, который при отображении что то делает (я симитирвоал работу Sleep)
public partial class SlowlyLoadedControl : UserControl
{
public SlowlyLoadedControl()
{
InitializeComponent();
this.Dock = DockStyle.Fill;
}
private void SlowCreatedControl_Load(object sender, EventArgs e)
{
Thread.Sleep(2000);
}
}
Так вот при отображении я вижу эффект двойного отрисовывания, что приводит к мерцанию. SuspendLayout должен поидее был помочь но увы, не смог.
Как мне избежать мерцания?
TIA