Создание заставки winforms 2.0 - PullRequest
3 голосов
/ 21 октября 2010

Какой самый простой способ запустить заставку (которая исчезает сама по себе) в приложении winforms C # / .NET 2.0?Похоже, что сборка VisualBasic (которую, тем не менее, можно вызвать из C #) имеет способ сделать это, но есть ли простые примеры?

Спасибо

Ответы [ 2 ]

1 голос
/ 21 октября 2010

Существует подробное руководство по Code Project , которое помещает заставку в собственный поток, чтобы основное приложение могло продолжить загрузку.

0 голосов
/ 21 октября 2010

Самый простой способ - создать форму и позволить ей убить себя через некоторое время, когда она будет показана.Но все становится сложнее, если вы хотите, чтобы эта форма отображала ход загрузки приложения во время инициализации приложения и исчезала, например, через 3 секунды после того, как приложение действительно было готово к использованию.

Идея заключалась бы в том, чтобы поместить заставку на совершенно другой поток из основного приложения.Это функция потока должна выглядеть следующим образом:

    static void ThreadFunc()
    {
        _splash = new Splash();
        _splash.Show();
        while (!_shouldClose)
        {
            Application.DoEvents();
            Thread.Sleep(100);
            if (new Random().Next(1000) < 10)
            {
                _splash.Invoke(new MethodInvoker(_splash.RandomizeText));
            }
        }
        for (int n = 0; n < 18; n++)
        {
            Application.DoEvents();
            Thread.Sleep(60);
        }
        if (_splash != null)
        {
            _splash.Close();
            _splash = null;
        }
    }

Затем вы можете использовать это, чтобы показать и скрыть:

    static public void ShowSplash()
    {
        _shouldClose = false;
        Thread t = new Thread(ThreadFunc);
        t.Priority = ThreadPriority.Lowest;
        t.Start();
    }
    internal static void RemoveSplash()
    {
        _shouldClose = true;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...