Witaj na Zine.net online Zaloguj się | Rejestracja | Pomoc

Zachowywanie stanu okna

Czasami, pisząc własne aplikacje Windows Forms lub używając takich czcielibyśmy, aby aplikacja była choć trochę bardziej spostrzegawcza i np. zapamiętywała atrybuty okna (położenie, rozmiar oraz stan) gdy przestajemy z nich korzystać. Skoro je przestawiliśmy to znaczy, że tam nam lepiej pasują. Dlatego aplikacja zamiast z uporem pokazywać nam okno zawsze w tym samym miejscu mogła by umilić nam życie. Szczególnie, że z programistycznego punktu widzenia nie jest to operacja trudna i pracochłonna.

Ostatnio w mojej codziennej pracy z TFS korzystam z małego narzędzia - Fissum - dającego mi dostęp do zapytań o WorkItemy poza Visual Studio. Dzięki temu, gdy przeprowadzam kompilację, albo pobieram źródła mogę sobie na boku zarzązać WorkItemami. Wszystko by było fajnie, gdyby nie denerwująca przypadłość tej aplikacji. Codziennie, gdy ją odpalam muszę zmienić pozycjęo okna, z którego najczęściej korzystam, ponieważ aplikacja z uporem pokazuje je na środku ekranu oraz w wielkości jaka mnie nie satysfakcjonuje. Postanowiłem to zmienić ;)

Mając na uwadze przyszłe aplikacje, chciałem zbudować rozwiązanie, które będę mógł łatwo wielokrotnie wykorzystywać. Ponadto chciałem zminimalizować ilość kodu jaki będzie potrzebny, aby dany program wzbogacić o funkcję zapamiętywania stanu okien. Dodatkowym atutem rozwiązania byłoby zachowywanie wyżej wymienionych atrybutów w zależności od zalogowanego użytkownika.

Wykorzystując mechanizm Isolated Storage oraz serializację zbudowałem bardzo proste rozwiązanie, które łatwo wykorzystać w dowolnej aplikacji Windows Forms. Użycie jest banalnie proste. Po tym jak utworzymy obiekt okna podajemy go do specjalnej klasy, która na podstawie identyfikatora (również podanego) spróbuje pobrać zapisane dane o stanie. Jeżeli takie znajdzie to aplikuje je do podanego okna. Wywołanie ma następującą postać:

PersistedWindow.Prepare(myForm, "FormIdentifier");

Sprawa jest prosta.

W załączniku znajdują się dwie klasy implementujące powyższe funkcje.

Opublikowane 18 grudnia 2007 23:00 przez nuwanda
Attachment(s): Persisted.zip

Komentarze:

# re: Zachowywanie stanu okna

18 grudnia 2007 23:26 by mgrzeg

Czekaj - nie zajarzylem - a co z oknem Fissuma? Kontrolujesz je, czy nie?

# re: Zachowywanie stanu okna

18 grudnia 2007 23:46 by nuwanda

No jasne! Projekt jest na CodePlex, pobrałem sobie źródełka i teraz śmiga. BTW napisałem też do twórcy Fissuma, który ma (mam nadzieję, że w następnej wersji) dołączyć kod zachowujący stan okien. Tak, że w wersji 0.6 może wystarczy sam release ;)

# re: Zachowywanie stanu okna

19 grudnia 2007 00:48 by mgrzeg

Eee.. a ja myslalem, ze dla dowolnej aplikacji, a nie takiej, do ktorej masz zrodelka :P

Jakby co, to Richter w swojej ksiazce 'Programming Applications for Windows' opisal narzedzie do zachowywania ulozenia ikonek na pulpicie - DIPS (przez wciskanie sie ze swoim dllem do explorer.exe). Mozna skorzystac i napisac cos podobnego w .net dla dowolnej app :)

# re: Zachowywanie stanu okna

19 grudnia 2007 00:54 by nuwanda

Hehe, w tym wypadku było łatwo i nie trzeba było hakować ;) Jednak pomysł, który podrzucasz jest naprawdę intrygujący...

# Tfs Spotlight – buduję własny CAB

11 marca 2008 12:06 by nblog

Od kilku miesięcy nic tu nie pisałem (oczywiście poza poprzednim nieplanowanym wpisem ). Jak łatwo się

Komentarze anonimowe wyłączone