Come build lo splash screen in un’applicazione Windows Form?

Devo mostrare la schermata iniziale all’avvio dell’applicazione per alcuni secondi. Qualcuno sa come implementarlo?

Sarà molto apprezzato per l’aiuto.

Innanzitutto, crea il tuo splash screen come una forma senza bordi e immobile con l’immagine su di esso, impostata inizialmente per la visualizzazione al centro dello schermo, colorata nel modo desiderato. Tutto ciò può essere impostato all’interno del designer; nello specifico, desideri:

  • Imposta le proprietà ControlBox, MaximizeBox, MinimizeBox e ShowIcon della maschera su “False”
  • Impostare la proprietà StartPosition su “CenterScreen”
  • Impostare la proprietà FormBorderStyle su “Nessuno”
  • Impostare MinimumSize e MaximumSize del modulo per essere uguale alla sua Dimensione iniziale.

Quindi, è necessario decidere dove mostrarlo e dove chiuderlo. Queste due attività devono essere eseguite su lati opposti della logica di avvio principale del programma. Questo potrebbe essere nella routine main () dell’applicazione, o possibilmente nel gestore di carico del modulo principale dell’applicazione; ovunque si creino oggetti costosi di grandi dimensioni, si leggano le impostazioni dal disco rigido e in genere si impiega molto tempo a fare cose dietro le quinte prima che venga visualizzata la schermata principale dell’applicazione.

Quindi, tutto ciò che devi fare è creare un’istanza del tuo modulo, Show () e mantenere un riferimento ad esso durante l’inizializzazione di avvio. Una volta caricato il modulo principale, Chiudi ().

Se la tua schermata iniziale avrà un’immagine animata su di essa, la finestra dovrà essere anch’essa “a doppio buffer” e dovrai essere assolutamente sicuro che tutta la logica di inizializzazione avvenga al di fuori del thread della GUI (il che significa che non puoi avere il tuo principale caricamento logico nel gestore di caricamento del mainform, dovrete creare un BackgroundWorker o qualche altra routine filettata.

L’esempio di seguito di Telerik utilizza un controllo ShapedForm, che tuttavia cambia in un normale modulo di Windows. Questo è di gran lunga il modo più semplice e migliore che abbia mai visto.

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

Ecco alcune linee guida …

  1. Crea un modulo senza bordi (questa sarà la schermata iniziale)
  2. All’avvio dell’applicazione, avviare un timer (con un intervallo di alcuni secondi)
  3. Mostra il tuo modulo Splash
  4. On Timer. Evita il timer, ferma il timer e chiudi il modulo Splash, quindi mostra il modulo di domanda principale

Fai un tentativo e, se rimani bloccato, torna indietro e fai domande più specifiche relative ai tuoi problemi

soluzione semplice e facile per creare splash screen

  1. apri nuova forma usa il nome “SPLASH”
  2. cambia immagine di sfondo come vuoi
  3. seleziona la barra di avanzamento
  4. seleziona il timer

ora imposta il segno di spunta del timer nel timer:

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

aggiungi un nuovo modulo usa il nome “FORM-1” e usa il seguente comando in FORM 1.

nota: il modulo Splash funziona prima di aprire il modulo1

  1. aggiungi questa libreria

     using System.Threading; 
  2. creare una funzione

     public void splash() { Application.Run(new splash()); } 
  3. usa il seguente comando in fase di inizializzazione come di seguito.

     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/

creare splash

 private void timer1_Tick(object sender, EventArgs e) { counter++; progressBar1.Value = counter *5; // label2.Text = (5*counter).ToString(); 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(); 

Quindi nella tua applicazione

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

Le altre risposte qui trattano bene, ma vale la pena sapere che c’è funzionalità incorporata per gli splash screen in Visual Studio: se apri le proprietà del progetto per l’app del modulo Windows e guardi la scheda Applicazione, c’è una “schermata Splash” : “opzione in basso. Scegli semplicemente il modulo nell’app che desideri visualizzare come schermata iniziale e si occuperà di mostrarlo all’avvio dell’app e di nasconderlo una volta visualizzata la tua scheda principale.

Devi ancora configurare il modulo come descritto sopra (con i bordi, il posizionamento, il dimensionamento, ecc. Corretti)

C’è una bella schermata Splash su CodeProject.

Viene fornito con

  • Dissolvenza in entrata
  • Barra di avanzamento
  • Etichetta di stato
  • Dissolvenza
  • Fare doppio clic per chiudere

L’autore ha recentemente effettuato e aggiornato il codice. È davvero un bel pezzo di lavoro, ed è una collaborazione tra molti sviluppatori diversi con buone idee.

Per prima cosa dovresti creare un modulo con o senza bordo (preferisci border-less per queste cose)

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

A Main dovresti usarlo

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

Prova questo codice

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

Prova questo:

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