wczytywanie opcji programu

0

Witam,
Pisząc program napotkałem na pewnien problem, chciałbym żeby użytkownik mógł ustawiać różne właściwości programu np. rozmiar okna, kolory przycisków, czy dzwięki wciskanych klawiszy, chciałbym żeby po zmianie ustawieniu właściwości a następnie wyłączeniu programu i włączeniu zmany byly widoczne a nie program wraca do ustawień początkowych.

Jakimś rozwiązaniem jest żeby te informacje zapisać do zwykłego pliku txt, ale nie jest to rozwiązanie profesionalne, można by było rówież zapisać je np w XML ale czy to ma sens... to sam niewiem, prosiłbym o odpowiedź (opinie) kogoś kto wie jak to się robi profesionalnie. Z góry dzięki

0

Możesz użyć klasy Settings:

Settings.Default.Context.Add("WindowSize", new Size(100, 200));
Settings.Default.Save();
//Pobieramy zapisane dane
this.Size = (Size)Settings.Default.Context["WindowSize"];

Możesz stworzyć klasę, którą następnie zserializujesz do pliku Xml lub binarnego. Zależy jakiego typu dane chcesz przechowywać.

0

IMHO najlepszym rozwiązaniem jest XML.
keyword: serializacja klasy

0

Wg mnie w tym wypadku to najlepszym są Settingsy. Od razu mamy rozdzielenie na ustawienia użytkownika i globalne (dla wszystkich).
Serializacja klasy jest prosta, ale po co coś robić jak mamy to od razu gotowe.

0

Jak by sie kto uparł to jeszcze można wykorzystać rejestr systemu ;)

Namespace: Microsoft.Win32
Klasa statyczna: Registry
Klasa: RegistryKey

też czasem przydatne ;)

0
Ermes napisał(a)

Jak by sie kto uparł to jeszcze można wykorzystać rejestr systemu ;)

Można też podłączyć pod RS232 murzyna z maszyną do pisania, który wszystko zapisze. Tylko czy jest sens?

0
somekind napisał(a)

Można też podłączyć pod RS232 murzyna z maszyną do pisania, który wszystko zapisze. Tylko czy jest sens?

ależ Ty nie miły :] a pomyślałeś może że np. po odinstalowaniu aplikacji można by zostawić pewne klucze w rejestzre by mozna było jakieś ustawienia odtworzyć, przy upadatach, reinstalacjach (a to dopiero wieżchołek góry lodowej możliwych rozwiązań) ? Tam można przechowywać też dane binarne wiec całkiem sporo różnych rzeczy tam wejdzie i czasem warto to wykoszystać, więc może jednak jest sens o takiej możliwości wspomnieć, a praktycznie kazda aplikacja w jakims stopniu chociaż drobnym korzysta z rejestru.
Chyba wszyscy programiści w wielu firmach nagle nie zgłupieli :]

a akurat to, że w tym konkretnym przypadku do przetrzymywania typowych ustawień aplikacji najlepiej się nadaje Settings to kwestia tylko i wyłącznie tego konkretnego przypadku.

0
Ermes napisał(a)

a pomyślałeś może że np. po odinstalowaniu aplikacji można by zostawić pewne klucze w rejestzre by mozna było jakieś ustawienia odtworzyć

Myślałem, myślałem i wymyśliłem np. katalog LocalAppData. Co Ty na to?

0
somekind napisał(a)

Myślałem, myślałem i wymyśliłem np. katalog LocalAppData. Co Ty na to?

lepiej :] ale i tak łatwiej jest wykorzystać klucze do zapisania niektórych ważnych wpisów np. jakichś ścieżek dostępu, pare linijek mniej i znacznie mniej wyjątków do obsłużenia, po prostu łatwiej ;P
chyba że ma się tonę ustawień to nie ma sensu wpisywać ich do rejestru moża to wtedy lepiej zorganizować, byłoby za dużo kluczy.

a Tobie chyba tylko chodzi o jakąś słuszność że rejestr może jest wcale nie przydatny :] a tu sie mylisz :P

to tak jak powiedzieć "po co nam tablice? używajmy tylko i wyłącznie list..."

0

I pomyśleć, że są na świecie SO, które nie mają rejestru.

0

Rejestr nie sluzy do przechowywania danych, tylko ustawien wspoldzielonych miedzy aplikacjami. Dlaczego? Poniewaz jego rozmiar bardzo wplywa na wydajnosc systemu. Od zapisywania ustawien prywatnych aplikacji sa katalogi uzytkownika (jak wspomniany przez somekind'a AppData).

Forma dowolna; XML jest wygodny.

0
mykhaylo napisał(a)

Możesz użyć klasy Settings:

Settings.Default.Context.Add("WindowSize", new Size(100, 200));
Settings.Default.Save();
//Pobieramy zapisane dane
this.Size = (Size)Settings.Default.Context["WindowSize"];

> Możesz stworzyć klasę, którą następnie zserializujesz do pliku Xml lub binarnego. Zależy jakiego typu dane chcesz przechowywać.


Dane zapisywane będą typu String więc ale użyje klasy Settings albo stworzoną klase do XML zserializuje, ale wydaje mi się że szybsze jest użycie już gotowej klasy Settings

1 użytkowników online, w tym zalogowanych: 0, gości: 1