SIGN UP MEMBER LOGIN:    
ARTICLE

Update app.config key value at run time in WPF

Posted by Rahul Kumar Saxena Articles | WPF with C# May 06, 2010
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.
Reader Level:
 

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.CS code

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Windows;

using System.Windows.Controls;

using System.Windows.Data;

using System.Windows.Documents;

using System.Windows.Input;

using System.Windows.Media;

using System.Windows.Media.Imaging;

using System.Windows.Navigation;

using System.Windows.Shapes;

using System.Configuration;

using System.Xml;

 

namespace UpdateAppConfigValueInWPF

{

    /// <summary>

    /// Interaction logic for MainWindow.xaml

    /// </summary>

    public partial class MainWindow : Window

    {

        public MainWindow()

        {

            InitializeComponent();          

        }

 

        private void Button_Click(object sender, RoutedEventArgs e)

        {

            if (!string.IsNullOrEmpty(textBoxCountry.Text))

            {

                UpdateConfigKey("Country", textBoxCountry.Text);

                textBoxCountry.Text = string.Empty;

            }

            else

                MessageBox.Show("Please type some value.");

        }

        public void UpdateConfigKey(string strKey, string newValue)

        {

            XmlDocument xmlDoc = new XmlDocument();

            xmlDoc.Load(AppDomain.CurrentDomain.BaseDirectory + "..\\..\\App1.config");

 

            if (!ConfigKeyExists(strKey))

            {

                throw new ArgumentNullException("Key", "<" + strKey + "> not find in the configuration.");

            }

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

 

            foreach (XmlNode childNode in appSettingsNode)

            {

                if (childNode.Attributes["key"].Value == strKey)

                    childNode.Attributes["value"].Value = newValue;

            }

            xmlDoc.Save(AppDomain.CurrentDomain.BaseDirectory + "..\\..\\App1.config");

            xmlDoc.Save(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);

            MessageBox.Show("Key Upated Successfullly");

       

        public bool ConfigKeyExists(string strKey)

        {

            XmlDocument xmlDoc = new XmlDocument();

            xmlDoc.Load(AppDomain.CurrentDomain.BaseDirectory + "..\\..\\App1.config");

 

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

 

            foreach (XmlNode childNode in appSettingsNode)

            {

                if (childNode.Attributes["key"].Value == strKey)

                    return true;

            }

            return false;

        }

    }

} 

 

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.

Login to add your contents and source code to this article
share this article :
post comment
 

Hi Rahul, i wanted to change the database name at run time in app.config file.I searched google ,but no help.After your coding i do it. Thanks Again Randeep Chauhan

Posted by Randeep Chauhan Sep 24, 2011

Could you do the same in windows c#, i tried many time to update, but not successfull here is my code(for update button): Configuration _config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); //_config.AppSettings.Settings.Remove("Server"); //_config.AppSettings.Settings.Remove("Database"); //_config.AppSettings.Settings.Remove("Username"); //_config.AppSettings.Settings.Remove("Password"); //_config.AppSettings.Settings.Remove("Scale"); _config.AppSettings.Settings.Add("Server",txtServer.Text); _config.AppSettings.Settings.Add("Database",txtDatabase.Text); _config.AppSettings.Settings.Add("Username",txtUsername.Text); _config.AppSettings.Settings.Add("Password",txtPassword.Text); _config.AppSettings.Settings.Add("Scale","0"); _config.Save(ConfigurationSaveMode.Modified); ConfigurationManager.RefreshSection("appSettings");

Posted by Thach Le Sep 21, 2011
Nevron Gauge for SharePoint
Become a Sponsor
PREMIUM SPONSORS
  • Get 2 Months Free of ASP.NET Hosting for Only $4.95/month! Receive FREE MS SQL and MySQL Databases Including ASP.NET 4/3.5, MVC 3.0, Silverlight 4, Windows 2008/IIS 7.0 Plus FREE IIS 7 Modules. Host UNLIMITED ASP.NET Web Sites - Click Here!
    ceTE software specializes in components for dynamic PDF generation and manipulation. The DynamicPDF™ product line allows you to dynamically generate PDF documents, merge PDF documents and new content to existing PDF documents from within your applications. Visit DynamicPDF here
6 Months Free & No Setup Fees ASP.NET Hosting!
Become a Sponsor