Hallo Leute,
ich habe heute den ganzen Tag damit verbracht herauszufinden, wie man die Einstellungen der My.Settings exportiert und importiert. Ich habe viele Codeschnipsel gefunden, jedoch setzten alle String-Typen in den My.Settings voraus.
Ich speichere in "meinen" My.Settings aber auch Boolean, Integer, Double und System.Color Datentypen ab (siehe Screenshot).
Da ich bisher hier im Forum immer nur "fragend" unterwegs war, möchte ich heute einmal eine Lösung posten, die sicherlich schon viele gesucht haben. Mit folgendem Code kann man alle Datentypen exportieren und importieren. Bei Bedarf lassen sich in der Select Case Anweisung auch noch weitere Datentypen hinzufügen:
Der Import und Export Routine kann man einen Dateinamen übermitteln, wenn man den Import und Export in eine bestimmte Datei machen möchte. Wird kein Dateiname angegeben, so werden die Daten in das lokale User-Verzeichnis exportiert. Das kann sich natürlich jeder abändern wie er möchte.
Für meine Anwendung ist das so aber ok, da jede Kassenstation ihre eigenen Settings haben sollte. Auch wäre es denkbar, dass mehrere Windows-User angelegt sind und jeder User seine eigenen individuellen Einstellungen hat.
Der Vorteil der Import- und Export Methode liegt daran, dass unabhängig von einer neuen Programmversion oder einer Neuinstallation vorhandene Konfigurationen rasch importiert werden können. Ich lese die Datei beim Start meiner Anwendung aus und schreibe diese beim Beenden der Anwendung.
LG Roland
ich habe heute den ganzen Tag damit verbracht herauszufinden, wie man die Einstellungen der My.Settings exportiert und importiert. Ich habe viele Codeschnipsel gefunden, jedoch setzten alle String-Typen in den My.Settings voraus.
Ich speichere in "meinen" My.Settings aber auch Boolean, Integer, Double und System.Color Datentypen ab (siehe Screenshot).
Da ich bisher hier im Forum immer nur "fragend" unterwegs war, möchte ich heute einmal eine Lösung posten, die sicherlich schon viele gesucht haben. Mit folgendem Code kann man alle Datentypen exportieren und importieren. Bei Bedarf lassen sich in der Select Case Anweisung auch noch weitere Datentypen hinzufügen:
VB.NET-Quellcode
- Imports System
- Imports System.IO
- Public Module mdl_Einstellungen
- ''' <summary>
- ''' Exportiert My.Settings in eine Textdatei und berücksichtigt auch andere Datentypen als String
- ''' </summary>
- ''' <remarks></remarks>
- Public Sub ExportSettings(Filename As String)
- If Filename = "" Then Filename = Path.Combine(My.Computer.FileSystem.SpecialDirectories.CurrentUserApplicationData, "FlexX.config")
- Dim Divider As String = ";"
- Using sWriter As New StreamWriter(Filename)
- For Each Setting As System.Configuration.SettingsPropertyValue In My.Settings.PropertyValues
- sWriter.WriteLine(Setting.Property.PropertyType.ToString & Divider & Setting.Name & Divider & Setting.SerializedValue)
- Next
- End Using
- My.Settings.Save()
- End Sub
- ''' <summary>
- ''' Importiert My.Settings aus einer Textdatei und berücksichtigt auch andere Datentypen als String
- ''' </summary>
- ''' <remarks></remarks>
- Public Sub ImportSettings(Filename As String)
- If Filename = "" Then Filename = Path.Combine(My.Computer.FileSystem.SpecialDirectories.CurrentUserApplicationData, "FlexX.config")
- If IO.Directory.Exists(Filename) = False Then Exit Sub 'nichts laden, wenn die Datei nicht existiert
- Dim Divider As String = ";"
- Using sReader As New StreamReader(Filename)
- While sReader.Peek() > 0
- Dim Input = sReader.ReadLine()
- Dim DataSplit = Input.Split(CChar(Divider))
- Select Case DataSplit(0)
- Case "System.Boolean"
- My.Settings(DataSplit(1)) = CBool(DataSplit(2))
- Case "System.String"
- My.Settings(DataSplit(1)) = DataSplit(2)
- Case "System.Int32"
- My.Settings(DataSplit(1)) = CInt(DataSplit(2))
- Case "System.Double"
- My.Settings(DataSplit(1)) = CDbl(DataSplit(2))
- Case "System.Drawing.Color"
- My.Settings(DataSplit(1)) = Color.FromName(DataSplit(2))
- 'Hier kann man weitere Datentypen einbinden
- End Select
- End While
- End Using
- My.Settings.Save()
- End Sub
- End Module
Der Import und Export Routine kann man einen Dateinamen übermitteln, wenn man den Import und Export in eine bestimmte Datei machen möchte. Wird kein Dateiname angegeben, so werden die Daten in das lokale User-Verzeichnis exportiert. Das kann sich natürlich jeder abändern wie er möchte.
Für meine Anwendung ist das so aber ok, da jede Kassenstation ihre eigenen Settings haben sollte. Auch wäre es denkbar, dass mehrere Windows-User angelegt sind und jeder User seine eigenen individuellen Einstellungen hat.
Der Vorteil der Import- und Export Methode liegt daran, dass unabhängig von einer neuen Programmversion oder einer Neuinstallation vorhandene Konfigurationen rasch importiert werden können. Ich lese die Datei beim Start meiner Anwendung aus und schreibe diese beim Beenden der Anwendung.
LG Roland
Liebe Grüße
Roland Berghöfer
Meine aktuellen und kostenlos verwendbaren Tools (mit VB.NET erstellt): freeremarkabletools.com | priconman.com | SimpleCalendar | AudibleTouch | BOComponent.com | bonit.at
Roland Berghöfer
Meine aktuellen und kostenlos verwendbaren Tools (mit VB.NET erstellt): freeremarkabletools.com | priconman.com | SimpleCalendar | AudibleTouch | BOComponent.com | bonit.at