2010-10-20 5 views
3

Quelle est la manière la plus simple de déclencher un écran de démarrage (lequel disparaît tout seul) dans une application Win Forms de C#/.NET 2.0? Il semble que l'assembly VisualBasic (qui peut être appelé à partir de C# néanmoins) a un moyen de le faire, mais existe-t-il des exemples simples?Création d'un écran de démarrage Winforms 2.0

Merci

+0

double possible de [C# Splash Problème d'écran] (http://stackoverflow.com/questions/392864/c-splash-screen-problème) –

Répondre

1

Il y a un tutoriel détaillé sur Code Project qui met l'écran de démarrage sur son propre fil pour l'application principale peut obtenir avec chargement jusqu'à.

0

Le moyen le plus simple serait de créer un formulaire et lui permettre de se tuer après un certain temps, il est montré. Mais, les choses deviennent plus compliquées si vous voulez que ce formulaire puisse afficher une progression de chargement de l'application pendant l'initialisation de l'application, et disparaisse par exemple 3 secondes après que l'application soit vraiment prête à l'emploi. L'idée serait de mettre l'écran de démarrage sur un fil complètement différent de l'application principale. Il est fonction de fil devrait aller comme ça:

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; 
     } 
    } 

Ensuite, vous pouvez l'utiliser pour montrer et cacher:

static public void ShowSplash() 
    { 
     _shouldClose = false; 
     Thread t = new Thread(ThreadFunc); 
     t.Priority = ThreadPriority.Lowest; 
     t.Start(); 
    } 
    internal static void RemoveSplash() 
    { 
     _shouldClose = true; 
    } 
Questions connexes