Witam, jak wy zapamiętujecie ustawienia programu na stałe ? Chyba popełniłem błąd bo moje wszystkie ustawienia zapisują się do pliku txt a zauważyłem, że istnieje takie coś jak properties settings i tam powinno się to robić.

- Rejestracja:ponad 11 lat
- Ostatnio:ponad 4 lata
- Postów:2442
Zapisz to w jakiejś klasie i skorzystaj z serializacji danych np. do XML. Domyślnie serializowane są publiczne własności (no chyba, że mają [XmlIgnore]
) i klasa musi mieć domyślny konstruktor. Podczas odczytu przy Deserialize
zostanie z automatu utworzony obiekt takiej klasy oraz uzupełnione jej własności. Przykłady znajdziesz, bo jest tego pełno.
Możesz też dokładać rzeczy do app.config'a
.
Tworzenie jakichś własnych wymyślnych formatów do prostej konfiguracji to trochę takie wynajdowanie koła na nowo.
- Rejestracja:ponad 9 lat
- Ostatnio:około 7 lat
- Postów:132
Ja robie tak: jak mało opcji i mało będę zmieniał poza aplikacją to: ConfigurationManager (link u kolegi na górze),
jak więcej danych robię klasę zbiorczą i obiekt serializjuje do XML'a.
XML jest bardziej elastyczny, można go łatwiej przesyłać/podmieniać, w przyszłości przy centralizacji można do bazy wrzucić/pobrać.
P

- Rejestracja:około 9 lat
- Ostatnio:12 miesięcy
- Lokalizacja:Kraków
- Postów:574
usm_auriga napisał(a):
Witam, jak wy zapamiętujecie ustawienia programu na stałe ? Chyba popełniłem błąd bo moje wszystkie ustawienia zapisują się do pliku txt a zauważyłem, że istnieje takie coś jak properties settings i tam powinno się to robić.
Ustawienia programu zapisuję w Settings (dostępne w Properties projektu).
Odczytuję przy starcie a zapisuję przy wyjściu/zmianie tak jak potrzeba.
Odczyt ustawień:
private void FrmMain_Load(object sender, EventArgs e)
{
//FrmMain position and size
this.StartPosition = FormStartPosition.Manual;
this.Left = Properties.Settings.Default.MainWindowLeftPosition;
this.Top = Properties.Settings.Default.MainWindowTopPosition;
this.Width = Properties.Settings.Default.MainWindowWidth;
this.Height = Properties.Settings.Default.MainWindowHeight;
if (Properties.Settings.Default.IsMaximized == true)
{
this.WindowState = FormWindowState.Maximized;
}
}
Zapis ustawień:
Properties.Settings.Default.MainWindowLeftPosition = this.Left;
Properties.Settings.Default.MainWindowTopPosition = this.Top;
Properties.Settings.Default.MainWindowHeight = this.Height;
Properties.Settings.Default.MainWindowWidth = this.Width;
if (this.WindowState == FormWindowState.Maximized)
{
Properties.Settings.Default.IsMaximized = true;
}
else
{
Properties.Settings.Default.IsMaximized = false;
}
Properties.Settings.Default.Save();
- img1.png (30 KB) - ściągnięć: 147
- Rejestracja:ponad 9 lat
- Ostatnio:około 7 lat
- Postów:132
Na jeszcze jedną rzecz zwrócę uwagę. (oprocz tego co wyzej zasugerowalem) czytając pomysł Kolegi o rejestrze (który tez jest dobry).
Jeżeli aplikacja może być uruchamiana przez wielu użytkowników można rozważyć zapisywanie ustawień w katalogu użytkownika (folder pobieramy z wykorzystaniem Environment.SpecialFolder).
Dzięki temu jedna aplikacja ma rożne ustawienia dla rożnych użytkowników.
A drugą zaleta (też ważna)... nie zawsze w lokalizacji aplikacji można zapisywać (brak praw dostępu, albo nośnik nie zapisywany).
P
Jak widzisz pomysłów dostarczone przez Kolegów jest kilka. Sam musisz pomyśleć na czym Ci zależy i co użyjesz.
- Rejestracja:około 22 lata
- Ostatnio:około miesiąc
- Postów:5042
Podsumowując, nie ważne jak będziesz zapisywał. Czy to będzie plik XML, czy rejestr, czy plik INI. Ważne, żeby zapisywać takie dane w odpowiednich miejscach (rejestr - klucz HKCU, pliki - folder AppData) i robić to w sposób wygodny. Czyli bez sensu jest tworzenie pliku tekstowego np. takim kodem:
List<string> settings = new List<string>();
settings.Add("FormWidth=" + form.Width.ToString());
//i dalej zapis do pliku
bo masz już do tego gotowe mechanizmy. Więc tak, jak mówi poprzednik, "sam musisz pomyśleć na czym Ci zależy i co użyjesz".
Już wiesz, że masz do dyspozycji XML, serializację, Settings, czy też rejestr.
...
Jeżeli aplikacja może być uruchamiana przez wielu użytkowników można rozważyć zapisywanie ustawień w katalogu użytkownika (folder pobieramy z wykorzystaniem Environment.SpecialFolder).Dzięki temu jedna aplikacja ma rożne ustawienia dla rożnych użytkowników
...
Niestety ludzie piszący pod windę rzadko kiedy mają takie przebłyski.
- Rejestracja:ponad 7 lat
- Ostatnio:4 miesiące
- Postów:1065
Polecam Settings. Działa prawie automagicznie.
Od razu się zapisuje w odpowiednich folderach nawet z numerem wersji programu + jest prosty sposób na aktualizację ustawień ze starszej wersji do nowszej.