我想知道C#自带的配制文件怎么用代码更新.
C#读取我己经知道了 ConfigurationSettings.AppSettings["Key"].ToString();

解决方案 »

  1.   

    它是个xml文件,可以通过xmldom修改。上面代码ToString() 也是多余的,索引器返回的本来就是string
      

  2.   

    修改很简单,你必须打开它的一个实例才行,你刚才那个方法用的是静态属性,所以不能修改。
    Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
    config.AppSettings.Settings.Remove("Key");
    config.AppSettings.Settings.Add("Key", "新的值");
    config.Save();
      

  3.   


     #region 修改config文件
            /// <summary>
            /// 修改配置文件
            /// </summary>
            /// <param name="key">节点名称</param>
            /// <param name="value">节点数据</param>
            public static void SetConfigValue(string key, string value)
            {
                bool isModified = false;
                foreach (string keyExist in ConfigurationManager.AppSettings)
                {
                    if (keyExist == key)
                    {
                        isModified = true;
                    }
                }
                // Open App.Config of executable      
                Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
                // You need to remove the old settings object before you can replace it      
                if (isModified)
                {
                    config.AppSettings.Settings.Remove(key);
                }
                // Add an Application Setting.      
                config.AppSettings.Settings.Add(key, value);
                // Save the changes in App.config file.      
                config.Save(ConfigurationSaveMode.Modified);
                // Force a reload of a changed section.      
                ConfigurationManager.RefreshSection("appSettings");
            }        #endregion
      

  4.   


    System.Configuration.ConfigurationSettings.AppSettings["Key"]; 
    但是现在FrameWork2.0已经明确表示此属性已经过时。并建议改为ConfigurationManager或WebConfigurationManager。并且AppSettings属性是只读的,并不支持修改属性值.
    但是要想调用ConfigurationManager必须要先在工程里添加system.configuration.dll程序集的引用。(在解决方案管理器中右键点击工程名称,在右键菜单中选择添加引用,.net TablePage下即可找到)添加引用后可以用 String str = ConfigurationManager.AppSettings["Key"]来获取对应的值了。
    更新配置文件: 
    Configuration cfa = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 
    //添加
    cfa.AppSettings.Settings.Add("key", "Name")
    //修改
    cfa.AppSettings.Settings["BrowseDir"].Value = "name";
    最后调用 
    cfa.Save(); 
    当前的配置文件更新成功。
    ConfigurationManager.RefreshSection("appSettings");// 刷新命名节,在下次检索它时将从磁盘重新读取它。记住应用程序要刷新节点参考:http://www.cnblogs.com/henw/archive/2012/01/31/2333783.html
      

  5.   

    一般需要修改下那个文件的读写属性后  再修改
    以前写的一个小方法 private bool saveSettings(string filePath)
            {
                System.IO.File.SetAttributes(filePath, System.IO.FileAttributes.Normal);
                List<AppSetting> appSettings = dgv_App.DataSource as List<AppSetting>;
                List<ConnSetting> connSettings = dgv_Conn.DataSource as List<ConnSetting>;
                XmlDocument doc = new XmlDocument();
                doc.Load(filePath);            #region 保存修改后的配置项
                XmlNode appNode = doc.DocumentElement.SelectSingleNode("appSettings");
                if (appNode != null)
                {
                    foreach (AppSetting appItem in appSettings)
                    {
                        foreach (XmlNode item in appNode.ChildNodes)
                        {
                            if (item is XmlElement)
                            {
                                if ((item as XmlElement).Attributes["key"].Value == appItem.Key)
                                    (item as XmlElement).Attributes["value"].Value = appItem.Value;
                            }
                        }
                    }
                }
                #endregion            #region 保存修改后的连接字串            XmlNode conNode = doc.DocumentElement.SelectSingleNode("connectionStrings");
                if (conNode != null)
                {
                    foreach (ConnSetting connItem in connSettings)
                    {
                        foreach (XmlNode item in conNode.ChildNodes)
                        {
                             if (item is XmlElement)
                            {
                                if ((item as XmlElement).Attributes["name"].Value == connItem.ConnName)
                                    (item as XmlElement).Attributes["connectionString"].Value = connItem.ConnString;
                            }
                        }
                    }
                }            #endregion
                doc.Save(filePath);
                return true;
            }