środa, 24 sierpnia 2011

C# i Splash Screen w aplikacji podczas ładowania Form

Taka szybka notka na temat wstawiania do aplikacji opartej na WindowsForms splash screena.
W mojej aplikacji potrzebny Splash Screen jest by pokazać użytkownikowi, że aplikacja się uruchamia, podczas gdy wczytywane są dane z bazy danych. Wiadomo - użytkownik, jeśli nie zobaczy błyskawicznej reakcji na działanie "dwukliku" na ikonkę, znów na nią kliknie, i znów i znów. Po co frustrować użytkowników? Lepiej zamontować w aplikacji splash screen.

Może to być jakaś miła dla oka grafika, czy cokolwiek innego.
Po 1. należy przygotować formatkę Splash - warto wyłączyć ikonę na pasku dla formy, obramowanie, ikony zamykania itd. - wszystkie properties, które mogą nas interesować zmieniamy jak dla każdej innej formatki.
Po 2. dla formatki Splash ustawiamy jakiś Background Image - to co będzie się pojawiało gdy będzie nam się aplikacja ładować. Warto przy tym dobrać tak rozmiar formatki, by cała grafika mieściła się w jej wnętrzu.
Po 3. W konstruktorze głównej formy aplikacji wpisujemy standardową konstrukcję tworzącą nasz splash screen, czyli
Splash splash = new Splash();
splash.Show();
splash.Update();
ostatnia linijka wymusza rysowanie okna zanim nastąpi zakończenie metody. Dzięki Show() komunikaty nadal są w ruchu (tj. aplikacja się ładuje), a Refresh() sprawia, że okienko się pojawi. Ta ostatnia linijka jest bardzo ważna dla osiągnięcia tego efektu. Sprawdźcie, jak się splash zachowa bez niej :)
Oczywiście, następne linijki w konstruktorze głównej formy to standardowo:
InitializeComponent();
// cała reszta stuffu inicjującego

Żeby splashScreen zniknął po załadowaniu się głównej formy wystarczy do kodu wywoływanego podczas zdarzenia Form.Load dla głównej formy wrzucić:
splash.Close(); // ewentualnie splash.Hide();

To tyle - ot, taki szybki sposób na ułatwienie życia użytkowników.