C#讀取修改配製檔案(Framework2.0)

來源:互聯網
上載者:User
在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");
}


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.