Winform 读取和添加 appSetting节点

程序读写配置文件

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <configSections>
        <section name="section4" type="System.Configuration.AppSettingsSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
        <section name="section3" type="System.Configuration.AppSettingsSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
        <section name="section2" type="System.Configuration.AppSettingsSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
        <section name="section1" type="System.Configuration.AppSettingsSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
    </configSections>
    <section4>
        <add key="section4key0" value="section4value0" />
        <add key="section4key1" value="section4value1" />
        <add key="section4key2" value="section4value2" />
    </section4>
    <section3>
        <add key="section3key0" value="section3value0" />
        <add key="section3key1" value="section3value1" />
        <add key="section3key2" value="section3value2" />
    </section3>
    <section2>
        <add key="section2key0" value="section2value0" />
        <add key="section2key1" value="section2value1" />
        <add key="section2key2" value="section2value2" />
    </section2>
    <section1>
        <add key="section1key0" value="section1value0" />
        <add key="section1key1" value="section1value1" />
        <add key="section1key2" value="section1value2" />
    </section1>
</configuration>

 

using System;
using System.Configuration;
using System.Windows.Forms;

namespace appString {
  public class appString {

    [STAThread]
    static void Main() {
      string[] sections = new string[] { "section1", "section2", "section3", "section4" };
      foreach (string section in sections) {
        for (int i = 0; i < 3; i++) {
          setString(section, section + "key" + i, section + "value" + i);
        }
      }
      string result = string.Empty;
      foreach (string section in sections) {
        result += string.Format("配置节点:{0}", section);
        for (int i = 0; i < 3; i++) {
          string childSection=string.Format("{0}",section + "key" + i);
          result += string.Format("\r\n\tkey:{0},", childSection);
          result += string.Format("value:{0}", getString(section, childSection));
        }
        result += "\r\n";
      }
      MessageBox.Show(result);
    }

    private static string getString(string section, string key) {
      try {
        Configuration configuration = config;
        AppSettingsSection newSection = appSection(section);
        if (newSection.Settings[key] == null) { return ""; }
        else { return newSection.Settings[key].Value; }
      }
      catch { return ""; }
    }

    private static void setString(string section, string key, string value) {
      try {
        Configuration configuration = config;
        AppSettingsSection appSetting = appSection(section);
        if (appSetting.Settings[key] == null) { appSetting.Settings.Add(key, value); }
        else { appSetting.Settings[key].Value = value; }
        configuration.Save(ConfigurationSaveMode.Modified);
        ConfigurationManager.RefreshSection(section);
      }
      catch (System.Exception Ex) { }
    }

    public static string conncetString { set; get; }
    private static string _configFile = System.Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\appString\user.config";
    private static string configFile { get { return _configFile; } }
    private static Configuration _config;

    public static Configuration config {
      get {
        if (_config != null) { return _config; }
        else {
          ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap();
          fileMap.ExeConfigFilename = configFile;
          _config = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
          return _config;
        }
      }
    }

    public static AppSettingsSection appSection(string sectionName) {
      AppSettingsSection appSetting = (AppSettingsSection)config.GetSection(sectionName);
      if (appSetting != null) { return appSetting; }
      try {
        appSetting = new AppSettingsSection();
        config.Sections.Add(sectionName, appSetting);
        appSetting.SectionInformation.ForceSave = true;
        config.Save(ConfigurationSaveMode.Modified);
        return appSetting;
      }
      catch (ConfigurationErrorsException Ex) { return null; }
    }
  }
}
View Code

 

posted @ 2016-11-14 20:36  浩洁  阅读(1795)  评论(0编辑  收藏  举报