Hi
wie erstell ich denn so einen Startbildschirm, wie z.B. bei Word wenn es geladen wird? Hab keine Idee wie ich das anstellen könnte.
Hoffe ihr könnt mir dabei helfen.
Gruß
Erstelle ein neues Form --> SplashScreen
auf diesem Form ein paar Properties verstellen
this.ControlBox = false;
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
this.ShowInTaskbar = false;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.TopMost = true;
Nun Bild usw auf diesem Form platzieren
Die Start-Routine könnte so aussehen (die einfachste Variante)
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
SplashScreen splash=new SplashScreen();
splash.Show();
Application.DoEvents();
Form2 frmMain=new Form2();
System.Threading.Thread.Sleep(1000);
frmMain.Show();
System.Threading.Thread.Sleep(500);
splash.Close();
splash=null;
Application.Run(frmMain);
}
Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...
Einfach eine Form, ohne System Menü. Daten laden und dann schließen. Wenn du Startbildschirm erstellen willst, der einfach 5 Sekunden angezeigt wird, kannst du das ja über einen Timer machen!
Da war der Programmiererhans schneller! 😁
Original von SimonKnight6600
Da war der Programmiererhans schneller! 😄
Tja hast du eine ToLateException erhalten 8)
Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...
Die deluxe Variante:
http://www.codeproject.com/csharp/PrettyGoodSplashScreen.asp
I am Jack's smirking revenge.
I am Jack's raging bile duct.
I am Jack's cold sweat.
I am Jack's complete lack of surprise.
I am Jack's broken heart.
I am Jack's wasted life.
Warum funktioniert Form.Close() nicht?
Also ich kann den SplashScreen nicht schließen.
Weil die Windows-Loop nicht aktiv ist. Die läuft erst mit Application-Run() los. Wenn dein Splash aktiv ist, hängst du aber noch im Sleep()!
Du solltest also nicht mit Sleep() arbeiten, sondern die Alternative mit dem Timer auf dem Splash-Form verwenden. In diesem Fall hast du aber den Splash-Screen UND das Hauptfenster oben. Auch nicht das was du willst.
Dazu musste du dem Application.Run() das Splash-Fenster übergeben und dann im Form_Close des Splash-Fensters das Hauptform aufrufen.
Schau dir mal die CodeProjekt-Lösung an!
DAs porblem ist aber dass ich die sleep funktionen gar nicht benutze und im debugger er mir das fenster schließt?
Was hast Du gegenüber meinem Posting verändert ?
Der von mir gepostete Code ist getestet und läuft.... 🤔
Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...
SplashScreen Screen = new SplashScreen();
Screen.Show();
Application.DoEvents();
Screen.Close();
MainForm Form = new MainForm();
Screen = null;
Application.EnableVisualStyles();
Application.EnableRTLMirroring();
Application.Run(Form);
Das ist mein Code.
Den Code den Du gepostet hast läuft bei mir !
Hast Du im SplashScreen irgendwelche Controls oder Code ?
Zudem: Achte darauf, dass Du keine reservierten Worte verwendest.... Dies kann schnell zu unlesbarem Code führen.
Sowohl Form als auch Screen sind existierende Typen .... somit nicht als Variablennamen zu verwenden.
Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...