In Visual Basic besteht die Hauptaufgabe der Speicherung des Zustands eines Formulars (Größe, Position, Werte der Felder) zwischen Sitzungen darin, Daten bei Schließen in eine externe Quelle (Datei, Registrierung, Benutzereinstellungen) zu schreiben und beim Start wiederherzustellen.
Ansätze:
Beispiel für die Verwendung von My.Settings:
' Zustand speichern 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 ' Zustand wiederherstellen 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
Einstellungen werden über den Designer oder manuell hinzugefügt.
Feinheiten:
Kann man ein nicht standardmäßiges Objekt (z. B. DataTable) über My.Settings speichern? Wie kann das richtig implementiert werden?
Antwort: Ja, aber die Einstellung muss vom Typ Benutzer sein, und das Objekt muss die Serialisierung unterstützen. Für DataTable oder komplexe Objekte speichert My.Settings die serialisierte Binary/XML-Form. Es ist notwendig, die Unterstützung für die Serialisierung zu implementieren oder die manuelle Speicherung über einen Serialisierer zu verwenden.
Geschichte
In der Anwendung wurde der Zustand des Formulars in der Windows-Registrierung gespeichert. Nach einigen Updates verloren die Benutzer aufgrund von Berechtigungsbeschränkungen den Zugriff auf die Einstellungen, was zu massiven Support-Anfragen führte. Lösung — Umstieg auf My.Settings in Benutzerprofilen.
Geschichte
Ohne Überprüfung der Fensterkoordinaten beim Start wurde die Anwendung außerhalb des sichtbaren Bereichs des Bildschirms angezeigt (der zweite Monitor wurde gewechselt). Jetzt wurde eine Logik zur Überprüfung der Grenzen des Desktop bei der Wiederherstellung der Fensterposition hinzugefügt.
Geschichte
Bei einem Update von der alten Version der Anwendung gewährten die Entwickler keinen Transfer der Benutzereinstellungen (Formulare eingebetteter Felder). Ergebnis — Datenverlust und Unzufriedenheit der Benutzer. Es wurde eine Politik zur Unterstützung der Versionsmigration der Einstellungen mit Kompatibilitätskontrolle eingeführt.