Update app.config key value at run time in WPF

In this article I am going to show how we can update a key value in app.config file in WPF. For this add reference of System.Configuration in your application.
  • 3903
 

  In this article, I am going to show how we can update a key value in app.config file in WPF. For this add reference of System.Configuration in your application.

Suppose we have a key in our app.config file like this:

AppConfigKey1.JPG

Image 1.

At run time we will change "Country" Key Value.

This is my XAML code

<Window x:Class="UpdateAppConfigValueInWPF.MainWindow"

        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

        Height="350" Width="525" Title="Update App.config value in WPF">

    <Grid>

        <Button Content="Update" Click="Button_Click" Height="20" Width="70"Margin="205,77,228,214"></Button>

        <TextBox Height="23" HorizontalAlignment="Left" Margin="184,34,0,0" Name="textBoxCountry"VerticalAlignment="Top" Width="120" />

        <TextBlock Height="23" HorizontalAlignment="Left" Margin="79,34,0,0" Name="textBlock1"Text="New Value for Key" VerticalAlignment="Top" Width="99" />

    </Grid>

</Window>

 

This is my XAML.vb code

Imports System.Collections.Generic
Imports System.Linq
Imports System.Text
Imports System.Windows
Imports System.Windows.Controls
Imports System.Windows.Data
Imports System.Windows.Documents
Imports System.Windows.Input
Imports System.Windows.Media
Imports System.Windows.Media.Imaging
Imports System.Windows.Navigation
Imports System.Windows.Shapes
Imports System.Configuration
Imports System.Xml
Class Window1
    Private Sub Button_Click(ByVal sender As ObjectByVal e As RoutedEventArgs)
        If Not String.IsNullOrEmpty(textBoxCountry.Text) Then
            UpdateConfigKey("Country", textBoxCountry.Text)
            textBoxCountry.Text = String.Empty
        Else
            MessageBox.Show("Please type some value.")
        End If
    End Sub
    Public Sub UpdateConfigKey(ByVal strKey As StringByVal newValue As String)
        Dim xmlDoc As New XmlDocument()
        xmlDoc.Load(AppDomain.CurrentDomain.BaseDirectory & "..\..\App1.config")

        If Not ConfigKeyExists(strKey) Then
            Throw New ArgumentNullException("Key""<" & strKey & "> not find in the configuration.")
        End If
        Dim appSettingsNode As XmlNode = xmlDoc.SelectSingleNode("configuration/appSettings")

        For Each childNode As XmlNode In appSettingsNode
            If childNode.Attributes("key").Value = strKey Then
                childNode.Attributes("value").Value = newValue
            End If
        Next
        xmlDoc.Save(AppDomain.CurrentDomain.BaseDirectory & "..\..\App1.config")
        xmlDoc.Save(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile)
        MessageBox.Show("Key Upated Successfullly")
    End Sub
    Public Function ConfigKeyExists(ByVal strKey As StringAs Boolean
        Dim xmlDoc As New XmlDocument()
        xmlDoc.Load(AppDomain.CurrentDomain.BaseDirectory & "..\..\App1.config")

        Dim appSettingsNode As XmlNode = xmlDoc.SelectSingleNode("configuration/appSettings")

        For Each childNode As XmlNode In appSettingsNode
            If childNode.Attributes("key").Value = strKey Then
                Return True
            End If
        Next
        Return False
    End Function
End Class

When I run the application it will ask for new value of key as shown below:

UpdateAppConfigKey.JPG

Image 2.

Now if we see App.config key then it is already been updated.

AppConfigKey2.JPG

Image 3.

Categories

More Articles

© 2020 DotNetHeaven. All rights reserved.