Comment créer un écran de démarrage dans l’application Windows Forms?

Je dois afficher l’écran de démarrage au démarrage de l’application pendant quelques secondes. Est-ce que quelqu’un sait comment mettre en œuvre cela?

Sera très apprécié pour l’aide.

Commencez par créer votre écran de démarrage sous une forme immuable, sans bordure, avec votre image, configurée pour s’afficher initialement au centre de l’écran, colorée comme vous le souhaitez. Tout cela peut être défini depuis le concepteur; spécifiquement, vous voulez:

  • Définissez les propriétés ControlBox, MaximizeBox, MinimizeBox et ShowIcon du formulaire sur “False”
  • Définissez la propriété StartPosition sur “CenterScreen”
  • Définissez la propriété FormBorderStyle sur “Aucun”
  • Définissez la taille minimale du formulaire et la taille maximale du formulaire sur la taille initiale.

Ensuite, vous devez décider où le montrer et où le rejeter. Ces deux tâches doivent avoir lieu sur les côtés opposés de la logique de démarrage principale de votre programme. Cela pourrait être dans la routine main () de votre application, ou éventuellement dans le gestionnaire de charge de votre formulaire d’application principal; Où que vous créiez de gros objects coûteux, que vous lisiez les parameters à partir du disque dur et que vous mettiez généralement beaucoup de temps à effectuer des tâches en arrière-plan avant que l’écran principal de l’application ne s’affiche.

Ensuite, il vous suffit de créer une instance de votre formulaire, de la montrer () et de la conserver pendant que vous effectuez l’initialisation de votre démarrage. Une fois votre formulaire principal chargé, fermez-le.

Si votre écran de démarrage comporte une image animée, la fenêtre devra également être “tamponnée” et vous devrez être absolument certain que toute la logique d’initialisation se produira en dehors du thread de l’interface graphique la logique de chargement dans le gestionnaire de charge du formulaire principal, vous devrez créer un fichier BackgroundWorker ou une autre routine threadée.

L’exemple ci-dessous de Telerik utilise un contrôle ShapedForm, mais changez-le en un formulaire Windows normal. C’est de loin le moyen le plus simple et le meilleur que j’ai vu.

http://www.telerik.com/support/kb/winforms/forms-and-dialogs/details/add-splashscreen-to-your-application

Voici quelques étapes guidées …

  1. Créez un formulaire sans bordure (ce sera votre écran de démarrage)
  2. Au démarrage de l’application, lancez une timer (à quelques secondes d’intervalle)
  3. Montrez votre formulaire d’éclaboussure
  4. Sur Timer.Tick événement, arrêtez le minuteur et fermez le formulaire Splash – puis affichez le formulaire principal de votre application

Allez-y et si vous êtes coincé, revenez et posez des questions plus spécifiques concernant vos problèmes.

solution simple et facile pour créer un écran de démarrage

  1. ouvrir le nouveau formulaire utiliser le nom “SPLASH”
  2. changer l’image de fond ce que vous voulez
  3. sélectionner la barre de progression
  4. sélectionner la timer

maintenant régler la timer de la timer:

private void timer1_Tick(object sender, EventArgs e) { progressBar1.Increment(1); if (progressBar1.Value == 100) timer1.Stop(); } 

append un nouveau formulaire, utilisez le nom “FORM-1” et utilisez la commande suivante dans FORM 1.

remarque: la forme Splash fonctionne avant d’ouvrir votre formulaire1

  1. append cette bibliothèque

     using System.Threading; 
  2. créer une fonction

     public void splash() { Application.Run(new splash()); } 
  3. utilisez la commande suivante dans l’initialisation comme ci-dessous.

     public partial class login : Form { public login() { Thread t = new Thread(new ThreadStart(splash)); t.Start(); Thread.Sleep(15625); InitializeComponent(); enter code here t.Abort(); } } 

http://solutions.musanitech.com/c-create-splash-screen/

créer des éclaboussures

 private void timer1_Tick(object sender, EventArgs e) { counter++; progressBar1.Value = counter *5; // label2.Text = (5*counter).ToSsortingng(); if (counter ==20) { timer1.Stop(); this.Close(); } } this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.BackColor = System.Drawing.SystemColors.GradientInactiveCaption; this.ClientSize = new System.Drawing.Size(397, 283); this.ControlBox = false; this.Controls.Add(this.label2); this.Controls.Add(this.progressBar1); this.Controls.Add(this.label1); this.ForeColor = System.Drawing.SystemColors.ControlLightLight; this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; this.Name = "Splash"; this.ShowIcon = false; this.ShowInTaskbar = false; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; this.ResumeLayout(false); this.PerformLayout(); 

Alors dans votre application

 sp = new Splash(); sp.ShowDialog(); 

Les autres réponses couvrent bien ce problème, mais il est utile de savoir qu’il existe des fonctionnalités intégrées pour les écrans de démarrage dans Visual Studio: Si vous ouvrez les propriétés du projet pour l’application Windows et consultez l’onglet Application, il y a : “option en bas. Vous choisissez simplement le formulaire dans votre application que vous souhaitez afficher en tant qu’écran d’accueil et il se chargera de l’afficher au démarrage de l’application et de la masquer une fois votre formulaire principal affiché.

Vous devez encore configurer votre formulaire comme décrit ci-dessus (avec les bordures, le positionnement, le dimensionnement, etc. corrects).

Il y a un assez bon écran de démarrage sur CodeProject.

Il est livré avec

  • Fondu
  • Barre de progression
  • Label d’état
  • Disparaître
  • Double-cliquez pour rejeter

L’auteur a récemment passé et mis à jour le code. C’est vraiment un travail et c’est une collaboration entre de nombreux développeurs avec de bonnes idées.

Vous devez d’abord créer un formulaire avec ou sans bordure (la valeur sans bordure est préférable pour ces choses)

 public class SplashForm : Form { Form _Parent; BackgroundWorker worker; public SplashForm(Form parent) { InitializeComponent(); BackgroundWorker worker = new BackgroundWorker(); this.worker.DoWork += new System.ComponentModel.DoWorkEventHandler(this.worker _DoWork); backgroundWorker1.RunWorkerAsync(); _Parent = parent; } private void worker _DoWork(object sender, DoWorkEventArgs e) { Thread.sleep(500); this.hide(); _Parent.show(); } } 

À Main, vous devriez utiliser cela

  static class Program { [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new SplashForm()); } } 

Je voulais un écran de démarrage qui s’afficherait jusqu’à ce que le formulaire principal du programme soit prêt à être affiché, donc les timers, etc. Je voulais aussi restr aussi simple que possible. Mon application commence par (abrégé):

 static void Main() { Splash frmSplash = new Splash(); frmSplash.Show(); Application.Run(new ReportExplorer(frmSplash)); } 

Ensuite, ReportExplorer a les éléments suivants:

 public ReportExplorer(Splash frmSplash) { this.frmSplash = frmSplash; InitializeComponent(); } 

Enfin, après tout l’initialisation est terminée:

 if (frmSplash != null) { frmSplash.Close(); frmSplash = null; } 

Peut-être me manque-t-il quelque chose, mais cela me semble beaucoup plus facile que de me moquer des fils et des timers.

Essayez ce code

 public partial class ssplashscreen : Form { public ssplashscreen() { InitializeComponent(); } private void timer1_Tick(object sender, EventArgs e) { progressBar1.Increment(1); if (progressBar1.Value == 100) { timer1.Stop(); this.Hide(); Form frm = new login(); frm.Show(); } } } 

Essaye ça:

 namespace SplashScreen { public partial class frmSplashScreen : Form { public frmSplashScreen() { InitializeComponent(); } public int LeftTime { get; set; } private void frmSplashScreen_Load(object sender, EventArgs e) { LeftTime = 20; timer1.Start(); } private void timer1_Tick(object sender, EventArgs e) { if (LeftTime > 0) { LeftTime--; } else { timer1.Stop(); new frmHomeScreen().Show(); this.Hide(); } } } }