De app.config file kan dienst doen als vervanging van de klassieke INI files en kan men bepaalde settings erin bewaren en/of aanpassen.
App.config file ziet erzo uit :
1: <appSettings>
2: <add key="SmtpServer" value="smtp.yourisp.tld" />
3: <add key="MailFrom" value="you@yourdomain.tld" />
4: <add key="ClientSettingsProvider.ServiceUri" value="" />
5: </appSettings>
6:
In dit voorbeeld worden de SmtpServer en MailFrom aangepast volgens de optie van de gebruiker en wordt dan overschreven in de app.config file en wordt de applicatie heropgestart om de aanpassingen zijn effect te kunnen laten doen.
De volgende Imports hebben we nodig :
1: Imports System.Xml
En de volgende Funtie :
1: Public Function Save_Config_Parameter(ByVal MyKey As String, ByVal MyValue As String) As String
2: Dim XmlDocument As New XmlDocument()
3: Dim XmlNode As XmlNode
4: Dim XmlRoot As XmlNode
5: Dim XmlKey As XmlNode
6: Dim XmlValue As XmlNode
7:
8: Save_Config_Parameter = ""
9: XmlDocument.Load(Application.ExecutablePath & ".config")
10: XmlNode = XmlDocument.DocumentElement.SelectSingleNode("/configuration/appSettings/add[@key=""" & MyKey & """]")
11:
12: If XmlNode Is Nothing Then
13: XmlNode = XmlDocument.CreateNode(XmlNodeType.Element, "add", "")
14: XmlKey = XmlDocument.CreateNode(XmlNodeType.Attribute, "key", "")
15: XmlKey.Value = MyKey
16: XmlNode.Attributes.SetNamedItem(XmlKey)
17: XmlValue = XmlDocument.CreateNode(XmlNodeType.Attribute, "value", "")
18: XmlValue.Value = MyValue
19: XmlNode.Attributes.SetNamedItem(XmlValue)
20: XmlRoot = XmlDocument.DocumentElement.SelectSingleNode("/configuration/appSettings")
21: If Not XmlRoot Is Nothing Then
22: XmlRoot.AppendChild(XmlNode)
23: Else
24: Save_Config_Parameter = "ERROR"
25: End If
26: Else
27: XmlNode.Attributes.GetNamedItem("value").Value = MyValue
28: End If
29: XmlDocument.Save(Application.ExecutablePath & ".config")
30: XmlDocument = Nothing
31: End Function
32:
De gebruiker heeft een optie scherm om zijn gegevens op in te vullen :

In de form_Load halen we de gegevens op uit de app.config file
1: Private Sub frmOpties_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
2: txtSmtpServer.Text = ConfigurationManager.AppSettings("SmtpServer")
3: txtMailFrom.Text = ConfigurationManager.AppSettings("MailFrom")
4: End Sub
5:
Na het aanpassen van de gebruiker zijn gegevens gaan we de settings wegschrijven naar de app.config file en de applicatie moet herstart worden :
1: Private Sub btnApply_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnApply.Click
2: Dim Resultaat As String = Nothing
3: Resultaat = Save_Config_Parameter("SmtpServer", txtSmtpServer.Text)
4: Resultaat = Save_Config_Parameter("MailFrom", txtMailFrom.Text)
5: ConfigurationManager.RefreshSection("appSettings")
6: MessageBox.Show("Opgelet er zijn veranderingen aangebracht en bij OK word de applicatie herstart.", "Opgelet", MessageBoxButtons.OK, MessageBoxIcon.Information)
7: Application.Restart()
8: End Sub
9:
Let op! Dit resultaat is niet zichtbaar in design mode alleen bij de release .exe en bijhorende app.config file.
Na het opstarten zijn de optie’s aangepast :

Om deze gegevens dan te gebuiken in de applicatie :
1: Imports System.Configuration
2: Dim XmlDocument As New XmlDocument()
3: Dim XmlNode As XmlNode
4: Dim XmlRoot As XmlNode
5:
6: Dim SmtpServer As String = Nothing
7: Dim MailFrom As String = Nothing
8: XmlDocument.Load(Application.ExecutablePath & ".config")
9: XmlRoot = XmlDocument.DocumentElement.SelectSingleNode("/configuration/appSettings")
10: For Each node As XmlNode In XmlRoot
11: If node.Attributes("key").Value = "SmtpServer" Then
12: SmtpServer = node.Attributes("value").Value
13: End If
14: If node.Attributes("key").Value = "MailFrom" Then
15: MailFrom = node.Attributes("value").Value
16: End If
17: Next
18: Dim smtpClient As New System.Net.Mail.SmtpClient(SmtpServer)
19: