2010-12-04 19 views
1

Je crée un programme simple qui a un écran de démarrage qui s'affiche pendant 3 secondes, après l'écran de démarrage, mon formulaire principal se charge. Cependant, quand mon formulaire principal sera chargé, il sera en train de charger tous mes contrôles (j'ai 36 boutons sur ma page ... en les utilisant pour une table de roulette). Donc, pour les premières 1-2 secondes de mon formulaire principal étant affiché, il est en train de charger tous ces boutons et semble plutôt moche. Comment puis-je charger ce formulaire pendant les 3 secondes de mon écran de démarrage ou de toute autre manière? MerciComment afficher le formulaire principal une fois les contrôles chargés


for (i = 0; i < 36; i++) 
{ int j, k; j = i % 3; k = i/3; 
    button[i] = new Label(); 
    button[i].Location = new Point(80 + (41*j), 64 + (20*k)); 
    button[i].Cursor = Cursors.Hand; 
    etc etc. 
} 
+0

WinForms ou Web? – adopilot

+0

J'utilise un WinForm de base – Nick

+0

J'ai quelque chose comme ça – Nick

Répondre

3

Il n'est pas de les charger, vous voyez le temps nécessaire juste pour peindre les boutons. Vous pouvez facilement vérifier ceci: minimiser le formulaire et le restaurer. Cette prise de 2 secondes est plutôt sur le haut de gamme, peut-être qu'il se sent comme ça ou que vous avez du matériel très sous-puissant. Avoir 36 boutons vous met près d'être en mesure d'observer la peinture, surtout quand ils ont une image. Assurez-vous que les images que vous mettez sur le bouton sont bien dimensionnés, devoir les redimensionner pour s'adapter au bouton est cher et mange dans le temps de peinture.

Un écran de démarrage ne résoudra pas ce problème, sauf si vous l'exécutez sur Vista ou Win7 avec Aero activé. Vous pouvez le masquer avec la propriété Opacity, passant de 0 à 0,99 avec un timer. Une vraie solution est de ne pas utiliser les boutons, mais dessinez simplement la table de roulette dans le contour de la méthode OnPaint(). Vous devrez cependant ajouter le code pour effectuer le test de la souris. Le correctif D consiste à doubler le formulaire en entier, en le transformant en un bitmap hors écran, puis en obtenant le résultat bluffé à l'écran. Cela n'accélère pas la peinture, ce n'est plus visible. Collez ce code dans votre classe de formulaire pour utiliser la prise en charge intégrée de Windows XP et plus:

protected override CreateParams CreateParams { 
    get { 
    CreateParams cp = base.CreateParams; 
    cp.ExStyle |= 0x02000000; // Turn on WS_EX_COMPOSITED 
    return cp; 
    } 
} 
+0

Eh bien, le double tampon a certainement beaucoup aidé. C'est quelque chose que je peux gérer. Fondamentalement ce à quoi il ressemble maintenant est que itère à travers les 36 boutons très rapidement pour les rendre tous transparents. – Nick