欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報(bào)激活碼778899分享:C#文件操作——配置文件

柚子快報(bào)激活碼778899分享:C#文件操作——配置文件

http://yzkb.51969.com/

配置文件一般分為內(nèi)置配置文和用戶自定義配置文件。

內(nèi)置配置文件包括app.config、web.config、Settings.settings等等。

用戶自定義配置文件一般是將配置信息放到INI文件、XML文件或注冊表中,配置信息一般包括程序設(shè)置,記錄運(yùn)行信息,保存控件的信息(比如位置,樣式)。 ?

一、內(nèi)置配置文件操作

app.config和web.config操作類似,以app.config為例,Settings.settings能夠指定值的類型和范圍。

1.a(chǎn)pp.config文件操作

該配置文件中主要的節(jié)點(diǎn)有:connectionStrings、appSettings、configSections等,這幾個(gè)屬于常用,操作都略有不同,DotNet提供直接操作各個(gè)節(jié)點(diǎn)的方法。在用到ConfigurationManager時(shí)要添加system.configuration.dll程序集的引用。

程序移植后配置文件的修改會保存在.exe.config的文件中,但是根據(jù)我經(jīng)驗(yàn)如果你不修改配置文件,一般exe不自動(dòng)創(chuàng)建一個(gè).exe.config的文件。

在項(xiàng)目進(jìn)行編譯后,在bin\Debuge文件下,將出現(xiàn)兩個(gè)配置文件,一個(gè)名為“*.EXE.config”,另一個(gè)名為“*.vshost.exe.config”。第一個(gè)文件為項(xiàng)目實(shí)際使用的配置文件,在程序運(yùn)行中所做的更改都將被保存于此;第二個(gè)文件為原代碼“app.config”的同步文件,在程序運(yùn)行中不會發(fā)生更改。

connectionStrings:由于保存數(shù)據(jù)連接字符串

讀?。?/p>

ConfigurationManager.ConnectionStrings["AccessDB"].ConnectionString;

寫入:

//設(shè)置連接字符串

ConnectionStringSettings setConnStr = newConnectionStringSettings("AccessDB", connectionString,"System.Data.OleDb");

//打開當(dāng)前應(yīng)用程序的app.config文件,進(jìn)行操作

Configuration appConfig =ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

//由于沒有更新連接字符串的方法,所以這里直接再添加一個(gè)連接字符串

appConfig.ConnectionStrings.ConnectionStrings.Add(setConnStr);

appConfig.Save();

// 強(qiáng)制重新載入配置文件的ConnectionStrings配置節(jié)

ConfigurationManager.RefreshSection("connectionStrings");

appSettings:主要存儲程序設(shè)置,以鍵值對的形式出現(xiàn)

讀取

String str = ConfigurationManager.AppSettings["DemoKey"];

寫入

Configuration cfg=ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

cfg.AppSettings.Settings["DemoKey"].Value= "DemoValue";

cfg.Save();

configSections:自定義配置節(jié)

name:自定義配置節(jié)的名稱。

type:自定義配置節(jié)的類型,主要包括:

System.Configuration.SingleTagSectionHandler

System.Configuration.DictionarySectionHandler

System.Configuration.NameValueSectionHandler。

不同的type不但設(shè)置配置節(jié)的方式不一樣,最后訪問配置文件的操作上也有差異。

三個(gè)不同的type操作: ?

說明:在聲明部分使用聲明了一個(gè)配置節(jié)它的名字叫Test1,類型為SingleTagSectionHandler。在設(shè)置配置節(jié)部分使用 設(shè)置了一個(gè)配置節(jié),它的第一個(gè)設(shè)置的值是Hello,第二個(gè)值是World,當(dāng)然還可以有更多。其它的兩個(gè)配置節(jié)和這個(gè)類似。?

下面我們看在程序中如何訪問這些自定義的配置節(jié)。我們用過ConfigurationSettings類的靜態(tài)方法GetConfig來獲取自定義配置節(jié)的信息。 ?

//訪問配置節(jié)Test1

IDictionary IDTest1 =(IDictionary)ConfigurationSettings.GetConfig("Test1");

string str = (string)IDTest1["setting1"]+" "+(string)IDTest1["setting2"];

MessageBox.Show(str); //輸出Hello World

//訪問配置節(jié)Test1的方法2

string[] values1=new string[IDTest1.Count];

IDTest1.Values.CopyTo(values1,0);

MessageBox.Show(values1[0]+""+values1[1]); //輸出HelloWorld

//訪問配置節(jié)Test2

IDictionary IDTest2 =(IDictionary)ConfigurationSettings.GetConfig("Test2");

string[] keys=new string[IDTest2.Keys.Count];

string[] values=new string[IDTest2.Keys.Count];

IDTest2.Keys.CopyTo(keys,0);

IDTest2.Values.CopyTo(values,0);

MessageBox.Show(keys[0]+" "+values[0]);

//訪問配置節(jié)Test3

NameValueCollectionnc=(NameValueCollection)ConfigurationSettings.GetConfig("Test3");

MessageBox.Show(nc.AllKeys[0].ToString()+""+nc["Hello"]); //輸出HelloWorld

配置節(jié)處理程序

返回類型

SingleTagSectionHandler

Systems.Collections.IDictionary

DictionarySectionHandler

Systems.Collections.IDictionary

NameValueSectionHandler

Systems.Collections.Specialized.NameValueCollection

sectionGroup:自定義配置節(jié)組

配置節(jié)組是使用元素,將類似的配置節(jié)分到同一個(gè)組中。配置節(jié)組聲明部分將創(chuàng)建配置節(jié)的

包含元素,在元素中聲明配置節(jié)組,并將屬于該組的節(jié)置于元素中。下面

是一個(gè)包含配置節(jié)組的配置文件的例子:

下面是訪問這個(gè)配置節(jié)組的代碼:

NameValueCollectionnc=NameValueCollection)ConfigurationSettings.GetConfig("TestGroup/Test");

MessageBox.Show(nc.AllKeys[0].ToString()+""+nc["Hello"]); ? ?//輸出HelloWorld

2.Settings.settings配置文件操作

這個(gè)用的不多,操作也很簡單,在此不詳細(xì)敘述。

二、用戶自定義文件操作

1.INI配置文件操作

2.XML配置文件操作

XML配置文件一般由我們自己定義格式,由于某些地方對于app.config不提供寫的功能,我們就需要自己來操作這個(gè)XML,這里我們就拿它作為例子,來說明XML的操作。

privatevoid SaveConfig(string ConnenctionString)

{

XmlDocument doc=new XmlDocument();

//獲得配置文件的全路徑

stringstrFileName=AppDomain.CurrentDomain.BaseDirectory.ToString()+"Code.exe.config";

doc.LOAd(strFileName);

//找出名稱為“add”的所有元素

XmlNodeList nodes=doc.GetElementsByTagName("add");

for(int i=0;i

{

//獲得將當(dāng)前元素的key屬性

XmlAttributeatt=nodes[i].Attributes["key"];

//根據(jù)元素的第一個(gè)屬性來判斷當(dāng)前的元素是不是目標(biāo)元素

if (att.Value=="ConnectionString")

{

//對目標(biāo)元素中的第二個(gè)屬性賦值

att=nodes[i].Attributes["value"];

att.Value=ConnenctionString;

break;

}

}

//保存上面的修改

doc.Save(strFileName);

}

3.注冊表配置操作

首先注冊表也是以鍵值對的形式存儲的,DotNet提供對注冊表的操作。

操作實(shí)例:

///

/// 從注冊表中加載窗體位置大小等信息

///

public static voidLoadFormPosition(System.Windows.Forms.Form Fo)

{

Microsoft.Win32.RegistryKey rk =Microsoft.Win32.Registry.CurrentUser.OpenSubKey("Software\\\\MapWinGISConfig",false);

try

{

if ((rk.GetValue(Fo.Name +"_x").ToString() != "") && (rk.GetValue(Fo.Name +"_y").ToString()!= "") && (rk.GetValue(Fo.Name + "_w").ToString()!= "") && (rk.GetValue(Fo.Name+ "_h").ToString() != ""))

{

Fo.Location = newSystem.Drawing.Point(int.Parse(rk.GetValue(Fo.Name +"_x").ToString(),CultureInfo.InvariantCulture), int.Parse(rk.GetValue(Fo.Name +"_y").ToString(),CultureInfo.InvariantCulture));

Fo.Size = newSystem.Drawing.Size(int.Parse(rk.GetValue(Fo.Name +"_w").ToString(),CultureInfo.InvariantCulture), int.Parse(rk.GetValue(Fo.Name +"_h").ToString(),CultureInfo.InvariantCulture));

}

}

catch

{

}

finally

{

rk.Close();

}

}

///

/// 將窗體位置大小信息保存在注冊表中

///

public static voidSaveFormPosition(System.Windows.Forms.Form Fo)

{

Microsoft.Win32.RegistryKey rk =Microsoft.Win32.Registry.CurrentUser.CreateSubKey("Software\\\\MapWinGISConfig");

if (Fo.Visible &&Fo.WindowState != System.Windows.Forms.FormWindowState.Minimized&&Fo.Location.X > -1 && Fo.Location.Y > -1 && Fo.Size.Width> 1 && Fo.Size.Height > 1)

{

rk.SetValue(Fo.Name +"_x", Fo.Location.X);

rk.SetValue(Fo.Name +"_y", Fo.Location.Y);

rk.SetValue(Fo.Name +"_w", Fo.Size.Width);

rk.SetValue(Fo.Name +"_h", Fo.Size.Height);

}

rk.Close();

}

三、應(yīng)用程序信息配置

通過代碼繼承ApplicationSettingsBase類(C/S模式),在代碼中設(shè)置相關(guān)的屬性。

? ?1.繼承該類一般有類屬性[SettingsProvider("System.Configuration.LocalFileSettingsProvider")]-詳情如下

? ?2.每個(gè)屬性必須設(shè)置是[ApplicationScopedSetting()]還是[UserSocpedSetting()],還可以設(shè)置默認(rèn)值[DefaultSettingValueAttribute("100,100")]

? ?3.屬性設(shè)置完成后,在方法級別或方法內(nèi)部(視情況而定)實(shí)例化該繼承的類,在窗體加載時(shí)設(shè)置相應(yīng)屬性。加載程序配置方法有兩種-詳情如下。

? ?4.如果需要可以利用事件監(jiān)視設(shè)置的屬性改變、保存、加載時(shí)進(jìn)行哪些操作

? ?5.在窗體注銷時(shí)保存設(shè)置。

詳解:

?(一),LocalFileSettingsProvider---為應(yīng)用程序設(shè)置類提供持久性存儲。

? ? ?1.該類提供一種機(jī)制--程序使用配置數(shù)據(jù)的機(jī)制,其將程序的設(shè)置文件保存到默認(rèn)的位置。

? ? ?2.客戶端并不顯示訪問這個(gè)類,而是在需要服務(wù)時(shí)由設(shè)置機(jī)制自動(dòng)調(diào)用,如:ApplicationSettingsBase中的很多成員都使用該類。

? ? ?3.該類將配置文件保存為.config的XML文件

? ? ? ? ?1.若字段的屬性設(shè)置為[UserScopedSetting()],則保存為user.config文件,

? ? ? ? ? ?保存位置C:\Documentsand Settings\[計(jì)算機(jī)用戶名]\LocalSettings\Application Data\[AssemblyCompany("huzongzhe")程序集中的一個(gè)屬性]\

? ? ? ? ?2.若字段的屬性設(shè)置為[ApplicationScopedSetting()],則保存為[程序名].exe.config文件,

? ? ? ? ? ?保存位置:與可執(zhí)行文件相同的目錄中。

? ? 4.ToolStripManager.LoadSettings(this)和ToolStripManager.SaveSettings(this)方法解釋

? ? ? ?首先,ToolStripManager提供Toolstrip相關(guān)類型的一些操作,包括合并,拆分toolstrip、呈現(xiàn)樣式、保存加載設(shè)置。

? ? ? ?其次,LoadSettings、SaveSettings的位置是C:\Documentsand Settings\[計(jì)算機(jī)用戶名]\LocalSettings\Application Data\[AssemblyCompany("huzongzhe")程序集中的一個(gè)屬性]\

? ? ? ? ? ? ?與LocalFileSettingsProvider提供的文件配置是同一個(gè)位置,并且是同一個(gè)文件。 ?

? ? ? 最后,LoadSettings的內(nèi)容:Size、IsDefault、ItemOrder、Visible、ToolStripPanelName、Name、Location等7個(gè)屬性。

?(二),加載程序配置方法

? ? ?1.通過函數(shù)Binding來綁定,這樣在程序加載時(shí)直接與配置文件的數(shù)據(jù)綁定,并且可以在值改變時(shí)直接加載到XML中。

? ? ? ? ? ?Binding bndBackColor = new Binding("BackColor", frmSettings1,

? ? ? ? ? ? ? ?"FormBackColor", true,DataSourceUpdateMode.OnPropertyChanged);

? ? ? ? ? ?this.DataBindings.Add(bndBackColor);

? ? ?2.通過提取的方法。這樣每次修改后不能動(dòng)態(tài)改變,需要手動(dòng)設(shè)置。

? ? ? this.Size = frmSettings1.FormSize;

?(三),[SettingsGroupName("System.Windows.Forms.ToolStripSettings.MapWinGIS.MainProgram.MapWinForm")]類屬性

? ? ?設(shè)置每個(gè)Toolstrip的前綴名,即每個(gè)組的前面限定名

? ? ?例如:tlbZoom工具條在配置文件中的標(biāo)識-->System.Windows.Forms.ToolStripSettings.MapWinGIS.MainProgram.MapWinForm.tlbZoom

?(四),方法Reload();Reset();Save(); Upgrade();

? ? ? ?Reload()方法從配置文件重新加載值。

? ? ? Reset() 方法將設(shè)置重置為默認(rèn)值。

? ? ? ?Save() 方法保存當(dāng)前設(shè)置的值。

? ? ? Upgrade()更新程序設(shè)置值。

代碼示例:

[SettingsProvider("System.Configuration.LocalFileSettingsProvider")]

[SettingsGroupName("System.Windows.Forms.ToolStripSettings.MapWinGIS.MainProgram.MapWinForm")]

sealedclass ToolStripSettings : ApplicationSettingsBase

{

public ToolStripSettings(string settingsKey) : base(settingsKey)//傳過來的是toolstrip的Name屬性

{

}

[UserScopedSetting()]

public System.Drawing.Point Location

{

get

{

if (this["Location"] == null)

{

if (this.GetPreviousVersion("Location") == null)

{

return newSystem.Drawing.Point(-1, -1);

}

return ((System.Drawing.Point)(this.GetPreviousVersion("Location")));

}

return ((System.Drawing.Point)(this["Location"]));

}

set

{

this["Location"] = value;

}

}

[UserScopedSetting(), DefaultSettingValue("StripDocker.Top")]

public string ToolStripPanelName

{

get

{

if(string.IsNullOrEmpty((string)(this["ToolStripPanelName"])))

{

// 設(shè)置早期設(shè)置的值

if(string.IsNullOrEmpty((string)(this.GetPreviousVersion("ToolStripPanelName"))))

{

// 默認(rèn)值

return string.Empty;

}

return ((string)(this.GetPreviousVersion("ToolStripPanelName")));

}

return ((string)(this["ToolStripPanelName"]));

}

set

{

this["ToolStripPanelName"] = value;

}

}

[UserScopedSetting()]

[DefaultSettingValue("ImageAndText")]

public string DisplayStyle

{

get

{

const string defaultValue = "ImageAndText";

if (this["DisplayStyle"] == null ||((string)(this["DisplayStyle"])) ==string.Empty)

{

// 設(shè)置早期值

if (this.GetPreviousVersion("DisplayStyle") == null ||((string)(this.GetPreviousVersion("DisplayStyle")))== string.Empty)

{

// 默認(rèn)值

return defaultValue;

}

return ((string)(this.GetPreviousVersion("DisplayStyle")));

}

return ((string)(this["DisplayStyle"]));

}

set

{

this["DisplayStyle"] = value;

}

}

}

柚子快報(bào)激活碼778899分享:C#文件操作——配置文件

http://yzkb.51969.com/

精彩內(nèi)容

評論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場。

轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/19346300.html

發(fā)布評論

您暫未設(shè)置收款碼

請?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問

文章目錄