问题描述
我想知道C#自带的配制文件怎么用代码更新.C#读取我己经知道了ConfigurationSettings.AppSettings["Key"].ToString();
解决方案
解决方案二:
它是个xml文件,可以通过xmldom修改。上面代码ToString()也是多余的,索引器返回的本来就是string
解决方案三:
修改很简单,你必须打开它的一个实例才行,你刚才那个方法用的是静态属性,所以不能修改。Configurationconfig=ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);config.AppSettings.Settings.Remove("Key");config.AppSettings.Settings.Add("Key","新的值");config.Save();
解决方案四:
引用2楼qldsrx的回复:
修改很简单,你必须打开它的一个实例才行,你刚才那个方法用的是静态属性,所以不能修改。C#codeConfigurationconfig=ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);config.AppSettings.Settings.Remove("Key");config.A……
没有尝试过,但是感觉非常不错!!谢谢三楼!!!
解决方案五:
#region修改config文件///<summary>///修改配置文件///</summary>///<paramname="key">节点名称</param>///<paramname="value">节点数据</param>publicstaticvoidSetConfigValue(stringkey,stringvalue){boolisModified=false;foreach(stringkeyExistinConfigurationManager.AppSettings){if(keyExist==key){isModified=true;}}//OpenApp.ConfigofexecutableConfigurationconfig=ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);//Youneedtoremovetheoldsettingsobjectbeforeyoucanreplaceitif(isModified){config.AppSettings.Settings.Remove(key);}//AddanApplicationSetting.config.AppSettings.Settings.Add(key,value);//SavethechangesinApp.configfile.config.Save(ConfigurationSaveMode.Modified);//Forceareloadofachangedsection.ConfigurationManager.RefreshSection("appSettings");}#endregion
解决方案六:
System.Configuration.ConfigurationSettings.AppSettings["Key"];但是现在FrameWork2.0已经明确表示此属性已经过时。并建议改为ConfigurationManager或WebConfigurationManager。并且AppSettings属性是只读的,并不支持修改属性值.但是要想调用ConfigurationManager必须要先在工程里添加system.configuration.dll程序集的引用。(在解决方案管理器中右键点击工程名称,在右键菜单中选择添加引用,.netTablePage下即可找到)添加引用后可以用Stringstr=ConfigurationManager.AppSettings["Key"]来获取对应的值了。更新配置文件:Configurationcfa=ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);//添加cfa.AppSettings.Settings.Add("key","Name")//修改cfa.AppSettings.Settings["BrowseDir"].Value="name";最后调用cfa.Save();当前的配置文件更新成功。ConfigurationManager.RefreshSection("appSettings");//刷新命名节,在下次检索它时将从磁盘重新读取它。记住应用程序要刷新节点
参考:
解决方案七:
引用楼主zschuxin123456的回复:
我想知道C#自带的配制文件怎么用代码更新.C#读取我己经知道了ConfigurationSettings.AppSettings["Key"].ToString();
一般需要修改下那个文件的读写属性后再修改以前写的一个小方法privateboolsaveSettings(stringfilePath){System.IO.File.SetAttributes(filePath,System.IO.FileAttributes.Normal);List<AppSetting>appSettings=dgv_App.DataSourceasList<AppSetting>;List<ConnSetting>connSettings=dgv_Conn.DataSourceasList<ConnSetting>;XmlDocumentdoc=newXmlDocument();doc.Load(filePath);#region保存修改后的配置项XmlNodeappNode=doc.DocumentElement.SelectSingleNode("appSettings");if(appNode!=null){foreach(AppSettingappIteminappSettings){foreach(XmlNodeiteminappNode.ChildNodes){if(itemisXmlElement){if((itemasXmlElement).Attributes["key"].Value==appItem.Key)(itemasXmlElement).Attributes["value"].Value=appItem.Value;}}}}#endregion#region保存修改后的连接字串XmlNodeconNode=doc.DocumentElement.SelectSingleNode("connectionStrings");if(conNode!=null){foreach(ConnSettingconnIteminconnSettings){foreach(XmlNodeiteminconNode.ChildNodes){if(itemisXmlElement){if((itemasXmlElement).Attributes["name"].Value==connItem.ConnName)(itemasXmlElement).Attributes["connectionString"].Value=connItem.ConnString;}}}}#endregiondoc.Save(filePath);returntrue;}
解决方案八:
该回复于2012-02-02 09:06:44被版主删除