Suspend layout не корректно отрабатывает. В чет баГ?
От: Grammer  
Дата: 03.12.09 07:55
Оценка:
Привет,
У меня есть небольшая проблема с мерцанием окна при его отображении. Точнее даже не самого окна а при динамической загрузке дочернего контрола.
У него 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
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.