Как получить код для запуска после показа формы? (Беда с "Показано".) - PullRequest
1 голос
/ 06 декабря 2011

Я думал, что Shown будет ответом.Но, похоже, не все элементы управления одинаковы.Панель отображается сразу, а метка - нет.

У меня есть следующий код:

public partial class Form2 : Form
{
    Panel p = new Panel() { BackColor = Color.Green };
    Label l = new Label() { Text = "abc", Location = new Point(0, 100) };

    public Form2()
    {
        Controls.Add(p);
        Controls.Add(l);

        Shown += new EventHandler(Form2_Shown);
    }

    void Form2_Shown(object sender, EventArgs e)
    {
        System.Threading.Thread.Sleep(2000);
    }
}

, который изначально показывает это:

enter image description here

А через 2 секунды - это:

enter image description here

Так как мне запустить код после «второго изображения»?

Ответы [ 2 ]

2 голосов
/ 06 декабря 2011
void Form2_Shown(object sender, EventArgs e)
{
    Application.DoEvents();
    System.Threading.Thread.Sleep(2000);
}

Я думаю, что это дает вам то, что вы хотите, но ИМХО, если у вас длительная операция, вы должны запустить другой поток.

0 голосов
/ 07 декабря 2011

Добавьте следующее в начале обработчика события:

this.Update();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...