Application Settings lesen und schreiben
Autor: Jürgen Gutsch
Version: 1.0
Sprache: vb.net
Benötigt wird:
.net Framework ab v2.0
VisualStudio.net
Application Settings lesen und schreiben
Beim erstellen einer größeren Desktopanwendung bin ich auf das Problem gestoßen, dass ich benutzerdefinierte Einstellungen (Optionen die der Benutzer einstellen kann) und globale Einstellungen (Optionen die vom Entwickler, oder von einem Administrator vorgenommen werden können) auslesen muss. bei den globalen ist es kein großes Problem aus der app.config die entsprechenden Application Settings auszulesen. Wo aber sollte ich die benutzerdefinierten Einstellungen auslesen, und vor allem speichern. Um nicht das rat neu zu erfinden, ließ ich mir von Google folgenden Artikel suchen: http://www.xtremevbtalk.com/ wird eine Klasse vorgestellt, die wahlweise benutzerdefinierte Einstellungen im Windows Benutzerverzeichnis speichert (\documents and settings\<username>\application data), oder in den Windows Share Verzeichnissen ("\documents and settings\All Users\application data")
Um jetzt meine AppSettings aus der web.config ebenfalls mit dieser Klasse auslesen können habe ich lediglich die Methode GetSetting() etwas ändern müssen:
Public Function GetSetting(ByVal key As String) As String
'xml document object
Dim xd As New System.Xml.XmlDocument
Dim asr As New System.Configuration.AppSettingsReader
'load the xml file
xd.Load(_configFileName)
'query for a value
Dim Node As System.Xml.XmlNode =
_ xd.DocumentElement.SelectSingleNode(
_ "/configuration/appSettings/add[@key=""" & key & """]")
'return the value or nothing if it doesn't exist
If Not Node Is Nothing Then
Return Node.Attributes.GetNamedItem("value").Value
Else
If Not asr.GetValue(key, GetType(String )) Is Nothing Then
Return asr.GetValue(key, GetType(String ))
Else
Return Nothing
End If
End If
End Function
Ein Anwendungsbeispiel:
Dim Setings As New AppSettings(AppSettings.Config.PrivateFile)
Dim strVar As String = Setings.GetSetting("mysetting")
strVar = strVar & " Hallo Welt"
Setings.SaveSetting("mysetting", strVar)
strVar = Setings.GetSetting("mysetting")
MsgBox(strVar)