W Visual Basic głównym zadaniem zapisywania stanu formularza (rozmiar, położenie, wartości pól) między sesjami jest zapisywanie danych w zewnętrznym źródle (plik, rejestr, ustawienia użytkownika) przy zamykaniu i przywracanie przy uruchamianiu.
Podejścia:
Przykład użycia My.Settings:
' Zapis stanu Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing My.Settings.WindowLocation = Me.Location My.Settings.WindowSize = Me.Size My.Settings.Save() End Sub ' Przywracanie stanu Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load If Not My.Settings.WindowSize.IsEmpty Then Me.Size = My.Settings.WindowSize End If If Not My.Settings.WindowLocation.IsEmpty Then Me.Location = My.Settings.WindowLocation End If End Sub
Ustawienia są dodawane przez projektant lub ręcznie.
Subtelności:
Czy można zapisać nietypowy obiekt (na przykład, DataTable) przez My.Settings? Jak to prawidłowo zrealizować?
Odpowiedź: Tak, ale ustawienie musi być typu User, a obiekt musi wspierać serializację. Dla DataTable lub złożonych obiektów My.Settings zapisuje serializowany Binary/XML-widok. Należy zrealizować wsparcie serializacji lub wykorzystać ręczne zapisywanie przez serializator.
Historia
W aplikacji zapisywano stan formularza w rejestrze Windows. Po pewnych aktualizacjach użytkownicy stracili dostęp do ustawień z powodu ograniczeń uprawnień, co spowodowało masowe zgłoszenia do wsparcia. Rozwiązanie — przejście na My.Settings w profilach użytkowników.
Historia
Bez sprawdzenia współrzędnych pozycji okna przy uruchomieniu aplikacja wyświetlała się poza widoczną częścią ekranu (zmienił się drugi monitor). Teraz dodano logikę sprawdzania granic pulpitu przy przywracaniu pozycji formularza.
Historia
Podczas aktualizacji ze starej wersji aplikacji programiści nie zapewnili przeniesienia ustawień użytkownika (formy-wbudowane pola). Efekt — utrata danych i niezadowolenie użytkowników. Przyjęto politykę wsparcia migracji wersji ustawień z kontrolą kompatybilności.