Visual C# — proste zapisywanie i przywracanie ustawień – cześć 2

Visual C# — proste zapisywanie i przywracanie ustawień – cześć 2
Razem głosów: 14 co stanowi: 88.57% całości.

imgres

 

Poprzednim razem opisałem proste zapisywanie ustawień naszej aplikacji,  jak wielkość i położenie przy zamykaniu i odtwarzać je przy uruchamianiu , teraz pójdziemy krok dalej chyba że sami odrobiliście zadanie domowe , a jak nie to ….. sami zobaczycie :)

Tym razem oczywiście nie będę się bawić w wymyślne dodatki, niemniej nasz programik będzie się zachowywać podobnie mianowicie przy zamykaniu będzie zapisywał, a przy otwieraniu programu przywracał nasze ustawienia. Tym razem jednak poza zapamiętywaniem położenia i stanu okna jak: normalne, zminimalizowane, zmaksymalizowanie to dodatkowo tym razem dodamy więcej i więcej możliwości , aż rejestr spuchnie jak bania i pęknie …… no dobra nie pęknie :)

Niemniej tym razem przejmiemy całkowitą niemal kontrolę nad tym co się będzie działo w formularzu mianowicie zajmiemy się obsługą zapamiętywania :

  • wartości pól tekstowych
  • pól kombi
  • radio butonów
  • przycisków numerycznych (up/down)
  • położenie pasków przewijania

całość jest tak prosta jak się okaże że można spokojnie używać metod do kontrolowania wszystkich dostępnych kontrolek.

Tymczasem pokrótce opiszę co się dzieje i jak.

Zacznijmy zatem od utworzenia nowego projektu o nazwie np.

ustawienia_programu

Na naszym formularzu umieścimy kilka drobiazgów :)  o np. tak:

Przechwytywanie

 

Jak widać mamy tu kilka przykładowych kontrolek jak: checkboxy, radiobutony, textboxy, numericbox(up/down) oraz poziomy i pionowy scrolbar.

Nie będziemy tu już więcej kombinować zatem formularz zostawiamy jak jest i dodajemy nowś klasę do naszego projektu o nazwie kojarzącej się z przeznaczeniem np:

RejestroweToolsy.cs

Przechwytywanie

 

No i teraz zajmiemy się zawartością nowego pliku co będziemy analizować poniżej.

ZAPISYWANIE  

Jak już wiemy zapis ustawień dokonywany jest w rejestrze systemu. Użyta tu przez nas będzie klasa Microsoft.Win32.RegistryKey  więc dodajemy na początku wpis:

dzięki czemu nasz zapis staje się bajecznie prosty. W tym celu stworzymy sobie funkcję ZapiszUstawienia() , która  pobierze nazwę aplikacji i pod ta nazwą zapisze w rejestrze wartości odczytane z naszych kontrolek. Funkcja prezentuje się następująco:

Jak widać nasza funkcja zajmuje się utworzeniem klucza w rejestrze oraz utworzeniem pod klucza z nazwą aplikacji i wartościami które do niej zostaną przekazane.  Teraz stworzymy kolejną funkcyjkę o nazwie ZapiszWszystko(), która będzie korzystać z naszej funkcji ZapiszUstawienia(); pozwoli to zapisać podstawowe informacji o formularzu, zatem jedziemy:

WindowState odpowiada za  stan okna (min,max,norm …)  i te informacje są zapisywane najpierw , Następnie jeśli nasze okno jest w normalnym stanie  zostają zapisane tylko informacje o obecnym rozmiarze okna i jego położeniu, ale jeśli okno zostało zminimalizowane lub zmaksymalizowane nasza funkcja zapisze tylko przywrócone granice okna – jak wielkość i położenie, które są w normalnym stanie pracy i zakończy się wywołaniem naszej kolejnej funkcji : ZapiszStan_kontrolek(), w której zajmiemy się zapamiętaniem stanu naszych kontrolek na formie i tak po kolei w pętli:

 

Jak widać powyższa funkcja zajmuje się zapisem tekstu zawartego w textBoxach, sprawdzeniem wartości ComboBox itd… Funkcja korzysta z instrukcji switch , w celu sprawdzenia  jaka kontrolka była używana i czy jest użyta czy nie. Pobrane informacje są przekazywane do funkcji ZapiszUstawienia(), która zapisuje w kluczu odpowiednie wartości. Tak zapis mamy za sobą , teraz czas zająć się odczytem naszych “ustawień” :)

ODCZYTYWANIE

W celu odczytania naszych ustawień stworzymy sobie funkcyjkę PobierzDane(), której zadaniem będzie pobranie informacji z rejestru. Oczywiście i tu skorzystamy z klasy Microsoft.Win32.RegistryKey dzięki czemu też ułatwimy sobie zadanie dobierania się odczytywania danych z rejestru systemu. Nasza funkcja zaglśdnie pod danś nazwę i zwróci zapisanś pod nią wartość jeśli występuje lub wartości domyślne:

Kolejna ważna funkcja podobnie jak przy zapisie  tak też przy odczycie tworzymy funkcję o nazwie WczytajUstawienia(), która pobierze z rejestru dane okna takie jak: rozmiar i pozycja w celu ustawienia naszego okienka:

i zakończy się wywołaniem funkcyjki WczytajStan_Kontrolek(), która to pobierze kolejno wartości kontrolek poprzez funkcję PobierzDane() i przekaże dane do naszych kontrolek przywracając ich stan po kolei w pętli:

i w zasadzie to by było na tyle … choć w zasadzie …

KORZYSTANIE Z FUNKCJI 

Jak widać funkcje są bardzo proste i stosunkowo łatwe w stosowaniu. Tak mogliśmy te funkcje wpisać sobie w  form1.cs, ale zauważcie iż stworzenie nowej klasy ułatwia nam przenoszenie klasy RejestroweToolsy do aplikacji i po dokonaniu kosmetyki mamy zapis i odczyt gotowy :) Wystarczy wywołać w naszym programie funkcje:

  • WczytajUstawienia(); by wczytać ustawienia
  • ZapiszUstawienia(); by zapisać ustawienia

W przypadku naszego przykładu  funkcja WczytajUstawienia() jest wywoływana na starcie naszego programu w zdarzeniu Form_Load(). Zapisu zaś dokonujemy przez umieszczenie funkcji ZapiszUstawienia() w zdarzeniu FormClosing(). Co wizualizujś poniższe przykłady użycia klasy RejestroweToolsy:

Wczytywanie:

Zapisywanie:

Nic też nie stoi na przeszkodzie by umieścić zapis ustawień pod zdarzeniem on_Click przycisku w sekcji odpowiedzialnej za ustawienia w naszym programie. Mośliwości mamy naprawdę wiele, a rejestr nie jest wcale taki straszny jak mówią, po prostu trzeba umieć się nim posługiwać, a nawet nie tyle nim co dostępnymi narzędziami, które ułatwiają życie z rejestrem:)

Tymczasem przykładowy projekt, który stworzyliśmy możemy pobrać tutaj :

[dm]47[/dm]

 

Podziel się na:
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • Blogplay