最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#使用Resources資源文件

 更新時(shí)間:2022年06月14日 14:27:06   作者:springsnow  
這篇文章介紹了C#使用Resources資源文件的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

一、創(chuàng)建資源文件

可以將字符串、圖像或?qū)ο髷?shù)據(jù)等資源包含在資源文件中,方便應(yīng)用程序使用。

創(chuàng)建資源文件的方法:

1、手動(dòng)或使用IDE工具自動(dòng)生成XML 資源 (.resx) 文件。(推薦)

創(chuàng)建一個(gè)包含字符串、圖像或?qū)ο髷?shù)據(jù)的 XML 資源 (.resx) 文件。

使用 Visual Studio 創(chuàng)建一個(gè)資源文件并將其包含在項(xiàng)目中。

Visual Studio 提供一個(gè)資源編輯器,借助該編輯器,可添加、刪除和修改資源。 編譯時(shí),資源文件會(huì)自動(dòng)轉(zhuǎn)換成二進(jìn)制 .resources 文件,并嵌入應(yīng)用程序程序集或附屬程序集中。

注意:內(nèi)部使用資源文件生成器 (Resgen.exe) 將文本文件轉(zhuǎn)換成二進(jìn)制資源 (.resources) 文件。 然后使用語(yǔ)言編譯器將這個(gè)二進(jìn)制資源文件嵌入可執(zhí)行應(yīng)用程序或應(yīng)用程序庫(kù),或者使用程序集鏈接器 (Al.exe) 將這個(gè)二進(jìn)制資源文件嵌入附屬程序集。

2、以編程方式創(chuàng)建一個(gè) XML 資源 (.resx) 文件。 使用ResXResourceWriter類

可以創(chuàng)建一個(gè) .resx 文件、枚舉其資源并按名稱檢索特定資源。

ResXResourceWriter rw = new ResXResourceWriter("Demo.rex");
rw.AddResource("Logo", Image.FromFile("logo.jpg");
rw.AddResource("Title", "Proce c#");
rw.Generate();
rw.Close();

二、使用ResourceManager讀取項(xiàng)目中資源文件

資源文件調(diào)用方法 
(1).txt 文件:不可以直接調(diào)用,得先將其轉(zhuǎn)換成 .resources 文件才能使用。 
(2).resx 文件:可以用 ResXResourceReader 來(lái)做讀取,但是這種方法不直觀,不推薦直接調(diào)用 .resx 文件。正確的方法是將其轉(zhuǎn)換成 .resources 文件,然后用 ResourceManager 作讀取工作。 
注意如果是在 VS.NET 中添加的 .resx 文件,那么它們自動(dòng)被設(shè)為 Embedded Resource,轉(zhuǎn)成 .resources 文件后被嵌入到 Assembly 中。 

(3).resources 文件分成兩種情況: 

  • 1、被嵌入或編譯成 Satellite Assembly:使用ResourceManager來(lái)獲得在 Assembly 中的資源。 
  • 2、單獨(dú)文件,沒(méi)被編譯或嵌入到Assembly:使用ResourceManager.CreateFileBasedResourceManager來(lái)獲得資源集(ResourceSet)。

在新建的Windows項(xiàng)目中,一般自動(dòng)生成兩個(gè)資源文件:Form1.resx和Resources.resx。其中,F(xiàn)orm1.resx附屬Form1窗體,Resources.resx在項(xiàng)目Properties子文件夾下。

下面我們看看讀取項(xiàng)目中資源文件

1、強(qiáng)類型讀取項(xiàng)目中resx資源文件。

1、創(chuàng)建一個(gè)項(xiàng)目的默認(rèn)資源文件。

2、在項(xiàng)目“Properties”目錄下,可以看到Resources.resx。

3、添加相關(guān)的資源。

4、可以看到系統(tǒng)自動(dòng)生成的強(qiáng)類型類。

使用強(qiáng)類型可直接使用類

logo.Image = ZS.MouldManagement.Properties.Resources._0

不僅在Properties文件夾下可以建立資源文件,也可以在任何地方創(chuàng)建資源文件。在建立名稱為MyResource資源文件的同時(shí),設(shè)計(jì)器會(huì)自動(dòng)生成兩個(gè)文件:MyResource.resx和MyResource.Designer.cs。其中后一個(gè)文件就包裝了設(shè)計(jì)器自動(dòng)生成的代碼,以方便對(duì)資源文件的強(qiáng)類型訪問(wèn)。

強(qiáng)類型訪問(wèn)代碼:

ZS.MouldManagement.Mould._333

2、使用代碼讀取項(xiàng)目中不同文化的resx資源文件

ResourceManager 可以根據(jù)不同的 UICulture 設(shè)置返回不同的本地資源,我們只需知道調(diào)用資源用到它就可以了。

Winform使用資源文件(ZS.MouldManagement.resx;ZS.MouldManagement.en-us.rex等等)

//多語(yǔ)言
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-us");
Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-us");

Assembly asm = Assembly.GetExecutingAssembly();
ResourceManager rm = new ResourceManager("ZS.MouldManagement.Properties.Resources", asm);
//ZS.MouldManagement是你程序的命名空間,ZS.MouldManagement.Properties 是資源類Resources的命名空間, 資源文件名稱不帶擴(kuò)展名
this.logo.Image = (Image)rm.GetObject("Logo");//Get**方法具有重載方法,第二個(gè)參數(shù)為CultureInfo對(duì)象
this.Title.Text = rm.GetString("Title");    //資源文件名稱不帶擴(kuò)展名

三、Windows項(xiàng)目中的窗體資源文件

因?yàn)閷?duì)Form1.resx的訪問(wèn)需要構(gòu)造Syste.Resources.ResourceManager對(duì)象,而訪問(wèn)Resources.resx里的資源可以直接使用Properties.Resources.resName(resName是你添加的資源的名稱)。 
只有向窗體上添加圖標(biāo)、圖像等資源后

會(huì)在窗體設(shè)計(jì)器Form1.Designer.cs自動(dòng)生成下面的代碼

ComponentResourceManager resources = new ComponentResourceManager(typeof(Form1));//創(chuàng)建ResourceManager對(duì)象
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));//根據(jù)資源的名稱獲取字符串資源
  
this.Item1.Image = global::ZS.MouldManagement.Properties.Resources._0; //訪問(wèn)項(xiàng)目中的資源

從代碼可以看出,c#將窗體的圖標(biāo)文件作為資源進(jìn)行保存了起來(lái),然后利用ComponentResourceManager來(lái)獲取這些資源。

它和ResourceManager用法一樣,System.ComponentModel.ComponentResourceManager繼承自Syste.Resources.ResourceManager。

使用ComponentResourceManager類進(jìn)行界面多語(yǔ)言切換

Thread.CurrentThread.CurrentUICulture = new CultureInfo("zh-CN");

ComponentResourceManager resources = new ComponentResourceManager(typeof(Form1));
resources.ApplyResources(this, "$this");
AppLang(form, resources);

#region AppLang for control
/// <summary>
/// 遍歷窗體所有控件,針對(duì)其設(shè)置當(dāng)前界面語(yǔ)言
/// </summary>
/// <param name="control"></param>
/// <param name="resources"></param>
private static void AppLang(Control control, System.ComponentModel.ComponentResourceManager resources)
{
    if (control is MenuStrip)
    {
        resources.ApplyResources(control, control.Name);
        MenuStrip ms = (MenuStrip)control;
        if (ms.Items.Count > 0)
        {
            foreach (ToolStripMenuItem c in ms.Items)
            {
                AppLang(c, resources);
            }
        }
    }

    foreach (Control c in control.Controls)
    {
        resources.ApplyResources(c, c.Name);
        AppLang(c, resources);
    }
}
#endregion

#region AppLang for menuitem
/// <summary>
/// 遍歷菜單
/// </summary>
/// <param name="item"></param>
/// <param name="resources"></param>
private static void AppLang(ToolStripMenuItem item, System.ComponentModel.ComponentResourceManager resources)
{
    if (item is ToolStripMenuItem)
    {
        resources.ApplyResources(item, item.Name);
        ToolStripMenuItem tsmi = (ToolStripMenuItem)item;
        if (tsmi.DropDownItems.Count > 0)
        {
            foreach (ToolStripMenuItem c in tsmi.DropDownItems)
            {
                AppLang(c, resources);
            }
        }
    }
}
#endregion

四、使用Assembly.GetManifestResourceStream()從此程序集加載指定的文件。

當(dāng)直接嵌入一資源時(shí),也就是說(shuō),不通過(guò)一個(gè)資源文件而直接將一資源(比如圖片)嵌入到 Assembly 中。這可以在 VS.NET 中通過(guò)設(shè)置一文件的 Build 屬性為“嵌入的資源” 實(shí)現(xiàn)。

在這種情況下 ResourceManager 就沒(méi)有用了,因?yàn)樗荒塬@取 .resources 資源文件。那么如何調(diào)用這類的資源呢?我們只要了解一些 System.Reflection.Assembly 這個(gè)類中的一些函數(shù)就可以了。

有三個(gè)相關(guān)函數(shù),不過(guò)我們只需要 Assembly.GetManifestResourceStream 這個(gè)函數(shù)。這個(gè)函數(shù)將一嵌入到 Assembly 中的資源以 stream 的方式返回,而我們可以將這個(gè) stream 轉(zhuǎn)成在 .NET 中可用的對(duì)象。

比如,如果嵌入資源是一圖片,那么我們可以利用 new Bitmap(Stream) 這個(gè)構(gòu)造方法獲得這個(gè)圖片資源的 Bitmap 對(duì)象。

1、將本地要加入的資源文本(視頻,圖片,文本或其它)加入項(xiàng)目。比如我們現(xiàn)在加入一個(gè)up.bmp的圖片到項(xiàng)目中,且放在文件夾Resources下面, 
2、將up.bmp右鍵選擇“屬性”的“生成操作”設(shè)置為"嵌入的資源"。

注意:訪問(wèn)資源的名稱規(guī)則為:項(xiàng)目命名空間.資源文件所在文件夾名.資源文件名

Assembly assm = Assembly.getGetExecutingAssembly();
Stream stream = assm.GetManifestResourceStream("CreateDatabase.Resources.aa.txt");
//讀取流
//文本
System.IO.StreamReader sr = new System.IO.StreamReader(stream);
string str = sr.ReadToEnd();
//XML文件
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(stream);
//圖片
Image img = Image.FromStream(stream);

到此這篇關(guān)于C#使用Resources資源文件的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • c#調(diào)用c++的DLL的實(shí)現(xiàn)方法

    c#調(diào)用c++的DLL的實(shí)現(xiàn)方法

    本文主要介紹了c#調(diào)用c++的DLL的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • C# linq查詢之動(dòng)態(tài)OrderBy用法實(shí)例

    C# linq查詢之動(dòng)態(tài)OrderBy用法實(shí)例

    這篇文章主要介紹了C# linq查詢之動(dòng)態(tài)OrderBy用法,實(shí)例分析了C#采用linq方式查詢時(shí)動(dòng)態(tài)排序的相關(guān)技巧,需要的朋友可以參考下
    2015-06-06
  • c#中task與thread區(qū)別及其使用的方法示例

    c#中task與thread區(qū)別及其使用的方法示例

    本文主要介紹了c#中task與thread區(qū)別及其使用的方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • C#字符串使用密鑰進(jìn)行加解密

    C#字符串使用密鑰進(jìn)行加解密

    這篇文章主要為大家詳細(xì)介紹了C#字符串使用密鑰進(jìn)行加解密的代碼,C#字符串加密和解密實(shí)現(xiàn)代碼,感興趣的小伙伴們可以參考一下
    2016-08-08
  • C# 并行和多線程編程——并行集合和PLinq

    C# 并行和多線程編程——并行集合和PLinq

    這篇文章主要介紹了C# 并行和多線程編程的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下
    2021-02-02
  • C# Xamarin利用ZXing.Net.Mobile進(jìn)行掃碼的方法

    C# Xamarin利用ZXing.Net.Mobile進(jìn)行掃碼的方法

    這篇文章主要介紹了C# Xamarin利用ZXing.Net.Mobile進(jìn)行掃碼的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • C#給Word中的字符添加著重號(hào)的方法詳解

    C#給Word中的字符添加著重號(hào)的方法詳解

    這篇文章主要為大家詳細(xì)介紹了如何利用C#實(shí)現(xiàn)給Word中的字符添加著重號(hào),文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)有一定幫助,需要的可以參考一下
    2022-05-05
  • C#面向?qū)ο缶幊袒A(chǔ)概念匯總

    C#面向?qū)ο缶幊袒A(chǔ)概念匯總

    今天小編就為大家分享一篇關(guān)于C#面向?qū)ο缶幊袒A(chǔ)概念匯總的文章,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-10-10
  • c#項(xiàng)目實(shí)現(xiàn)發(fā)布到服務(wù)器全過(guò)程

    c#項(xiàng)目實(shí)現(xiàn)發(fā)布到服務(wù)器全過(guò)程

    這篇文章主要介紹了c#項(xiàng)目實(shí)現(xiàn)發(fā)布到服務(wù)器全過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • C#中Thread(線程)和Task(任務(wù))實(shí)例詳解

    C#中Thread(線程)和Task(任務(wù))實(shí)例詳解

    .NET Framework在System.Threading命名空間中具有與線程相關(guān)的類,線程是一小組可執(zhí)行指令,這篇文章主要給大家介紹了關(guān)于C#中Thread(線程)和Task(任務(wù))的相關(guān)資料,需要的朋友可以參考下
    2022-03-03

最新評(píng)論

称多县| 新巴尔虎右旗| 淳安县| 道孚县| 应用必备| 平湖市| 桐城市| 锡林浩特市| 集贤县| 山阴县| 靖远县| 响水县| 彭水| 桃园县| 黔江区| 栾川县| 汾西县| 普格县| 金湖县| 贵阳市| 五大连池市| 雷州市| 磐石市| 邻水| 鸡西市| 锡林郭勒盟| 扬州市| 高密市| 凤台县| 南江县| 双鸭山市| 泸西县| 张家川| 苏尼特右旗| 瓦房店市| 漠河县| 香港 | 香河县| 荣昌县| 湘西| 吉林市|