在VS 2005中設定和讀取設定檔已經變的很簡單了,而且是強型別的,讀取的值可以直接賦值給相應的變數,無需強制轉換。
例如:DateTime userDateTime1 = Properties.Settings.Default.userDateTime1; 真是方便了很多。但是你有沒有發現,使用 Properties.Settings.Default.Save() 儲存了設定後,Application 範圍的設定為什麼沒有儲存成功,User 範圍的設定的變化為什麼沒有體現到 app.config 檔案中去呢?
1. 在VS 2005中進行應用程式設定
開啟 項目屬性 » 設定,如下圖:
輸入名稱,選擇類型和範圍,輸入值儲存即完成設定。
類型:int,string,DateTime等各種資料類型;
範圍:Application 範圍的設定對所有使用者都有效;
User 範圍的設定對目前使用者(當前 Windows 登入的使用者)有效,同一個設定每個使用者可以有不同的值,而且互不影響。
2. 讀取設定檔(讀取應用程式設定)
無論是Application 範圍的設定,還是User 範圍的設定,讀取的方法都是一樣的。
// 讀取設定
this.appSetting1TextBox.Text = Properties.Settings.Default.appSetting1;
this.userSetting1TextBox.Text = Properties.Settings.Default.userSetting1;
3. 儲存 User 範圍設定檔(儲存 User 範圍的應用程式設定) // 儲存 User 範圍的設定
Properties.Settings.Default.userSetting1 = this.userSetting1TextBox.Text;
Properties.Settings.Default.Save(); User 範圍設定檔沒有儲存在應用程式檔案夾下,而是儲存在這裡:X:\Documents and Settings\Windows登入使用者\Local Settings\Application Data。
4. 儲存 Application 範圍設定檔(儲存 Application 範圍的應用程式設定)
儲存 Application 範圍設定檔可沒有儲存 User 範圍設定檔那樣簡單,直接 Properties.Settings.Default.Save() 是不行的。因為 Application 範圍的設定在運行時是“唯讀”的。這裡使用的方法是使用 XmlDocument 來直接儲存 config 檔案,然後在 Reload 設定。 // 儲存 Applicationi 範圍的設定
string configFileName = Application.ExecutablePath + ".config";
System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
doc.Load(configFileName);
string configString = @"configuration/applicationSettings/SetConfig.Properties.Settings/setting[@name='appSetting1']/value";
System.Xml.XmlNode configNode = doc.SelectSingleNode(configString);
if (configNode != null)
{
configNode.InnerText = this.appSetting1TextBox.Text;
doc.Save(configFileName);
// 重新整理應用程式設定,這樣下次讀取時才能讀到最新的值。
Properties.Settings.Default.Reload();
}
順便說一下:使用 Properties.Settings.Default.Reset() 可以恢複 User 範圍設定的預設值(從 app.config 中恢複)。
原始碼下載:SetConfig.rar
轉自:http://www.cnblogs.com/anjou/archive/2007/03/27/690465.html
這下面兩個方法也類似,摘抄下來做個備份學習:
private void SaveConfig(string ConnenctionString)
{
XmlDocument doc=new XmlDocument();
//獲得設定檔的全路徑
string strFileName=AppDomain.CurrentDomain.BaseDirectory.ToString()+".exe.config";
doc.Load(strFileName);
//找出名稱為“add”的所有元素
XmlNodeList nodes=doc.GetElementsByTagName("add");
for(int i=0;i<nodes.Count;i++)
{
//獲得將當前元素的key屬性
XmlAttribute att=nodes[i].Attributes["key"];
//根據元素的第一個屬性來判斷當前的元素是不是目標元素
if (att.Value=="ConnectionString")
{
//對目標元素中的第二個屬性賦值
att=nodes[i].Attributes["value"];
att.Value=ConnenctionString;
break;
}
}
//儲存上面的修改
doc.Save(strFileName);
}
==============================================================================
public static void SetValue(string AppKey,string AppValue)
{
XmlDocument xDoc = new XmlDocument();
xDoc.Load(System.Windows.Forms.Application.ExecutablePath + ".config");
XmlNode xNode;
XmlElement xElem1;
XmlElement xElem2;
xNode = xDoc.SelectSingleNode("//appSettings");
xElem1 = (XmlElement)xNode.SelectSingleNode("//add[@key='" + AppKey + "']");
if ( xElem1 != null ) xElem1.SetAttribute("value",AppValue);
else
{
xElem2 = xDoc.CreateElement("add");
xElem2.SetAttribute("key",AppKey);
xElem2.SetAttribute("value",AppValue);
xNode.AppendChild(xElem2);
}
xDoc.Save(System.Windows.Forms.Application.ExecutablePath + ".config");
}