欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

在.NET中讀取嵌入和使用資源文件的方法

 更新時間:2016年05月20日 10:11:46   作者:笨笨.Net  
本文分別介紹了使用GetManifestResourceStream讀取嵌入資源,和使用. resx資源文件嵌入資源,希望對大家有所幫助。

Dotnet中嵌入資源(位圖、圖標或光標等)有兩種方式,一是直接把資源文件加入到項目,作為嵌入資源,在代碼中通過Assembly的GetManifestResourceStream方法獲取資源的Stream。另一種方法是在項目中加入. resx資源文件,在資源文件中添加資源,由ResourceManager類統(tǒng)一管理其中的資源。

下面分別詳述這兩種方法

一、使用GetManifestResourceStream讀取嵌入資源

1、加入資源文件

直接把要嵌入到程序集的資源文件加入到項目中,可以加在項目的根目錄,可以加在項目的任何目錄中。

2、設置資源文件的“BuildAction”屬性

將嵌入資源文件的“BuildAction”屬性設置為“Embedded Resource”

3、代碼中使用嵌入資源

//獲得正在運行類所在的名稱空間

Type type = MethodBase.GetCurrentMethod().DeclaringType;

string _namespace = type.Namespace;

//獲得當前運行的Assembly

Assembly _assembly = Assembly.GetExecutingAssembly();

//根據名稱空間和文件名生成資源名稱

string resourceName = _namespace + ".directory.BitmapManifest.bmp";

//根據資源名稱從Assembly中獲取此資源的Stream

Stream stream = _assembly.GetManifestResourceStream(resourceName);

Image myImage = Image.FromStream(stream);

注意資源名稱的組成規(guī)則:

項目默認名稱空間.資源在項目中所在目錄.資源文件名

上面代碼中BitmapManifest.bmp位圖就在項目的directory目錄下。如果資源文件直接在項目根目錄,則為項目默認名稱空間.資源文件名

再給一個xml資源的例子:

//獲得正在運行類所在的名稱空間

Type type = MethodBase.GetCurrentMethod().DeclaringType;

string _namespace = type.Namespace;

//獲得當前運行的Assembly

Assembly _assembly = Assembly.GetExecutingAssembly();

//根據名稱空間和文件名生成資源名稱

string resourceName = _namespace + ".XMLFileTest.xml";

//根據資源名稱從Assembly中獲取此資源的Stream

Stream stream = _assembly.GetManifestResourceStream(resourceName);

 

XmlDocument xmlDoc = null;

xmlDoc = new XmlDocument();

xmlDoc.Load(stream);

二、使用. resx資源文件嵌入資源

1、新建資源文件

在項目中新建一個資源文件,資源文件以.resx為后綴,同時還會新建一個跟資源文件同名的Designer.cs文件。

其實資源文件最大的用處是用來做多語言版本的軟件時保存不同語言的資源,比如不同語言的菜單文本,可以把不同語言的字符串放在同一個資源類型下的不同資源包中,程序運行時根據運行時系統(tǒng)的culture選擇不同的包顯示不同語言的字符串。

新建了資源文件后就能往資源文件中添加資源文件:

http://img.jbzj.com/file_images/article/201605/2016520100219123.gif
圖1 .resx資源文件可嵌入的資源類型

資源中可以添加字符串、位圖、圖標、音頻、文件等等的資源。

添加的資源都會被保存在項目的Resources文件夾中。

2、設置資源文件的“BuildAction”屬性

Resources文件夾中的所有資源文件的“BuildAction”屬性設置為“Embedded Resource”。

3、 資源存在方式

.resx資源文件管理的資源可以用兩種存在形式,一種是以一般的文件形式存在于Resources文件夾中,另一個是經過Base64編碼后嵌入到.resx資源文件中。

http://img.jbzj.com/file_images/article/201605/2016520100229966.gif
圖2 .resx資源文件中資源存在方式 

打開.resx資源文件,選擇資源,在屬性中Persistence屬性決定資源的存在形式。資源的兩種存在形式,在代碼中調用都是一樣的。

4、 代碼中使用嵌入資源

//獲得正在運行類所在的名稱空間

Type type = MethodBase.GetCurrentMethod().DeclaringType;

string _namespace = type.Namespace;

//獲取當前主程序集

Assembly currentAssembly = Assembly.GetExecutingAssembly();

//資源的根名稱

string resourceRootName = _namespace + ".ResourceTest";

//實例化資源管理類

ResourceManager resourceManager = new ResourceManager(resourceRootName, currentAssembly);

//根據資源名獲得資源對象

Icon myIcon = (Icon)resourceManager.GetObject("IconTest");

注意資源的根名稱的規(guī)則:

資源的根名稱就是這個資源文件類的全名稱。

打開.resx資源文件相應的Designer.cs文件能看到資源類的全名稱:名稱空間.資源類名。

資源名就是某個資源在.resx資源文件中的名稱。

打開.resx資源文件可以看到各個資源的名稱。上面圖中圖標文件IconTest.ico的名稱是IconTest。

若要檢索“字符串”資源,請調用 GetString 方法。

若要檢索其他類型的資源,請調用 GetObject 方法,并將得到的資源顯式轉換成對應的類型。

5、多語言的資源應用

//得到當前語言環(huán)境
CultureInfo ci = Thread.CurrentThread.CurrentCulture;
//CultureInfo ci = System.Globalization.CultureInfo.CurrentCulture;

Icon myIcon = (Icon)resourceManager.GetObject("IconText", ci);

以上就是腳本之家的為大家整理的兩種嵌入和使用資源文件的方法,本人比較偏向使用第二種,希望能幫到大家。

相關文章

  • C#編程之AOP編程思想

    C#編程之AOP編程思想

    這篇文章介紹了C#編程之AOP編程思想,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • C#并行編程之數據并行Tasks.Parallel類

    C#并行編程之數據并行Tasks.Parallel類

    這篇文章介紹了C#并行編程之數據并行Tasks.Parallel類,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • c# 兩種發(fā)送郵件的方法

    c# 兩種發(fā)送郵件的方法

    這篇文章主要介紹了c# 兩種發(fā)送郵件的方法,幫助大家更好的理解和學習使用c#,感興趣的朋友可以了解下
    2021-04-04
  • 詳解C#如何判斷字符串的顯示寬度

    詳解C#如何判斷字符串的顯示寬度

    這篇文章主要為大家詳細介紹了C#判斷字符串的顯示寬度的相關知識,文中的示例代碼講解詳細,具有一定的學習價值,感興趣的小伙伴可以了解一下
    2023-11-11
  • C#實現windows系統(tǒng)重啟和關機的代碼詳解

    C#實現windows系統(tǒng)重啟和關機的代碼詳解

    這篇文章主要介紹了C#實現windows系統(tǒng)重啟和關機的的方法,涉及C#調用windows系統(tǒng)命令實現控制開機、關機等操作的技巧,非常簡單實用,需要的朋友可以參考下
    2024-02-02
  • C#控制臺基礎 List泛型集合與對應的數組相互轉換實現代碼

    C#控制臺基礎 List泛型集合與對應的數組相互轉換實現代碼

    這篇文章主要介紹了C#控制臺基礎 List泛型集合與對應的數組相互轉換實現代碼,需要的朋友可以參考下
    2016-12-12
  • C#簡單寫入xml文件的方法

    C#簡單寫入xml文件的方法

    這篇文章主要介紹了C#簡單寫入xml文件的方法,可實現C#針對XML文件簡單寫入的功能,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • C#編程實現發(fā)送郵件的方法(可添加附件)

    C#編程實現發(fā)送郵件的方法(可添加附件)

    這篇文章主要介紹了C#編程實現發(fā)送郵件的方法,具備添加附件的功能,涉及C#文件傳輸及郵件發(fā)送的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-11-11
  • C#對桌面應用程序自定義鼠標光標

    C#對桌面應用程序自定義鼠標光標

    這篇文章介紹了C#對桌面應用程序自定義鼠標光標的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • C#使用foreach語句遍歷隊列(Queue)的方法

    C#使用foreach語句遍歷隊列(Queue)的方法

    這篇文章主要介紹了C#使用foreach語句遍歷隊列(Queue)的方法,涉及foreach語句的使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-04-04

最新評論