Wyobraźmy sobie , że mam prosty panel logowania. Loguje się : login - aaaa, hasło bbb.
Moja forma ma 5 checkboxów , które po prostu sobie są , nic nie robią, można je tylko zaznaczać.
Niech checkboxy mają nazwy : ch1 , ch2, ch3 , ch4, ch5
Zaznaczam sobie ch1, ch2 , ch3, wylogowuję się z programu. Jaką funkcję mogę wykrzystać, by stan mojej formy był zapisywany w zależności od zalogowanego użytkownika? Bo wyobraźmy sobie usera xxxx , który zaznaczy jednego checkboxa i po ponownym zalogowaniu powinien widzieć tylko jednego checkboxa. Z góry dzięki za wskazówki, pomoce itd. Pozdrowionka
Zapis do jakiegoś pliku albo https://msdn.microsoft.com/en-us/library/bb397750(v=vs.110).aspx
W bazie danych, w plikach, w plikach konfiguracyjnych. Przechowywać nazwę użytkownika i te dane w odniesieniu do danego usera.
Jak nie chcesz bazy danych to możesz serializować ustawienia do plików XML o nazwach w zależności od np. loginu użytkownika.
Używasz takich oto namespace'ów:
using System.Xml.Serialization;
using System.IO;
Tworzysz klasę do serializacji. Musi być z dostępem publicznym:
[Serializable]
public class Dane {
public string Login { get; set; }
public bool CzyZaznaczony { get; set; }
// etc...
}
Później zapisujesz dane normalnie do pliku XML serializując dane:
var daneLogowania = new Dane();
// Załóżmy, że obiekt `daneLogowania` jest wypełniony danymi.
var serializer = new XmlSerializer(typeof(Dane));
var strumien = new StringWriter();
serializer.Serialize(strumien, dane);
File.WriteAllText(dane.Login + ".cfg", strumien.ToString());
I masz :) Możesz tak zapisywać nawet całe kolekcje danych wstawiając powiedzmy:
typeof(List<Dane>)
Deserializujesz używając StringReader'a
i metody Deserialize
klasy XmlSerializer
, która zwróci Ci obiekt klasy object
. Wystarczy do skonwertować na cokolwiek co spodziewasz się, że masz w typeof()
.
Baaaardzo przydatna metoda i niezależna od typów danych przechowywanych w klasie do serializacji (no... prawie niezależna). Po deserializacji masz gotowy obiekt wypełniony danymi ze wskazanego pliku. Nie musisz martwić się o parsowanie czy wymyślanie formatu zapisu danych etc... Idealna rzecz do przechowywania konfiguracji. Jak chcesz jakieś hasełka mieć to możesz je zaszyfrować dodatkowo i szlus :)