Najprościej rzecz ujmując, serializacja jest procesem konwertowania obiektu na strumień bajtów, który można zapisać w oddzielnym pliku. Celem serializacji jest zapisanie stanu obiektu, aby w dowolnym momencie móc go odtworzyć. Proces odtwarzania obiektu ze strumienia bajtów nazywany jest deserializacją. A jak to wygląda w praktyce? Poniżej zamieszczam przykład najprostszej aplikacji pozwalającej na zapis ustawień koloru tła formy oraz tekstu, utworzonego w czasie działania aplikacji, w kontrolce RichTextBox. Po utworzeniu nowego projektu dodajemy na formę kontrolkę RichTextBox, Button oraz ColorDialog, a następnie dodajemy do projektu nową klasę. Dla przypomnienia, aby dodać nową klasę klikamy na pasku narzędziowym Project i wybieramy: Add Class. Zmieniamy nazwę klasy na: Ustawienia. Teraz przed nazwą naszej klasy umieszczamy atrybut <Serializable()> , dzięki któremu będzie możliwy zapis oraz odczyt danych ze strumienia bajtów. Wnętrze klasy powinno wyglądać tak jak poniżej:
<Serializable()> Public Class Ustawienia
End Class
Nasz program ma umożliwiać zapis koloru tła formy oraz tekstu, tak więc do klasy musimy dodać odpowiednie zmienne, które pozwolą na zapis oraz odczyt tych danych. Gotowa klasa może wyglądać np. tak:
<Serializable()> Public Class Ustawienia
’Zmienne przechowujące kolor oraz tekst
Private KolorTla As Color
Private Tekst As String
’Konstruktor klasy
Public Sub New()
End Sub
’Zapis oraz odczyt wartości typu: kolor
Public Property Kolor() As Color
Get
Return KolorTla
End Get
Set(ByVal value As Color)
KolorTla = value
End Set
End Property
’Zapis oraz odczyt wartości typu: tekst
Public Property Napis() As String
Get
Return Tekst
End Get
Set(ByVal value As String)
Tekst = value
End Set
End Property
End Class
Teraz wróćmy do naszej formy. Dla prawidłowego działania aplikacji należy zaimportować dwie biblioteki: System.IO oraz System.Runtime.Serialization.Formatters.Binary Kolejnym etapem jest dodanie obsługi dwóch zdarzeń formy, które będą wywoływane przy jej starcie oraz zamykaniu. To właśnie tu będziemy wczytywać oraz zapisywać stan naszej aplikacji. Ostatnim elementem będzie dodanie możliwości zmiany koloru tła formy. Listing programu zamieszczam poniżej.
’Zaimportowanie dodatkowych bibliotek
Imports System.IO
Imports System.Runtime.Serialization.Formatters.Binary
Public Class Form1
’Start aplikacji
Sub New()
InitializeComponent()
’Deserializacja danych
If File.Exists(„ustawienia.ust”) Then
Dim plik As New FileStream(„ustawienia.ust”, FileMode.Open)
Dim bf As New BinaryFormatter
Dim konfig As Ustawienia = bf.Deserialize(plik)
Me.BackColor = konfig.Kolor
RichTextBox1.Text = konfig.Napis
plik.Close()
Else
MsgBox(„Brak pliku ustawień użytkownika…”)
End If
End Sub
’Zamykanie aplikacji
Private Sub Form1_FormClosed(sender As System.Object, e As System.Windows.Forms.FormClosedEventArgs) Handles MyBase.FormClosed
’Serializacja danych
Dim plik As New FileStream(„ustawienia.ust”, FileMode.Create)
Dim bf As New BinaryFormatter
Dim konfig As New Ustawienia
konfig.Kolor = Me.BackColor
konfig.Napis = RichTextBox1.Text
bf.Serialize(plik, konfig)
plik.Close()
End Sub
’Zmiana koloru formy
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
If ColorDialog1.ShowDialog Then
Me.BackColor = ColorDialog1.Color
End If
End Sub
End Class
Przy pierwszym uruchomieniu program wyświetli komunikat: “Brak pliku ustawień użytkownika…”, ale po zamknięciu i ponownym uruchomieniu komunikat już się nie wyświetli, ponieważ w trakcie zamykania zostanie utworzony plik ustawień programu. Oczywiście nazwa oraz rozszerzenie pliku może być dowolna, ale sugeruję, aby jako rozszerzenie podać takie, które nie będzie powiązane z już istniejącym w naszym systemie.
Zdobytą w tej części kursu wiedzę możemy wykorzystać do rozbudowy aplikacji z poprzedniego kursu. Możemy np. rozbudować ją o zapis ustawień konta, z którego wysyłana będzie wiadomość e-mail. Jeżeli ktoś chciałby skorzystać z gotowca to poniżej znajdują się linki do kodu programu zapisanego w pliku tekstowym oraz gotowy program w postaci pliku *.exe Aplikacja jest rozbudowanym programem z poprzedniego odcinka kursu. Dodałem zapis ustawień parametrów naszego konta oraz możliwość dodawania nowych kontaktów. Oczywiście każdy nowo dodany kontakt będzie zapamiętany i przy kolejnym uruchomieniu programu będzie pojawiał się na liście kontaktów. Jednak zamiast ściągać gotowy program można spróbować we własnym zakresie rozbudować go o dodatkowe funkcje, do czego bardzo zachęcam. Najciekawsze programy będą opublikowane na Forum.
Pobierz listing programu
Pobierz program w wersji *.exe