在.NET中讀取嵌入和應用資本文件的辦法。本站提示廣大學習愛好者:(在.NET中讀取嵌入和應用資本文件的辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是在.NET中讀取嵌入和應用資本文件的辦法正文
Dotnet中嵌入資本(位圖、圖標或光標等)有兩種方法,一是直接把資本文件參加到項目,作為嵌入資本,在代碼中經由過程Assembly的GetManifestResourceStream辦法獲得資本的Stream。另外一種辦法是在項目中參加. resx資本文件,在資本文件中添加資本,由ResourceManager類同一治理個中的資本。
上面分離胪陳這兩種辦法
1、應用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);
留意資本稱號的構成規矩:
項目默許稱號空間.資本在項目中地點目次.資本文件名
下面代碼中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);
2、應用. resx資本文件嵌入資本
1、新建資本文件
在項目中新建一個資本文件,資本文件以.resx為後綴,同時還會新建一個跟資本文件同名的Designer.cs文件。
其實資本文件最年夜的用途是用來做多說話版本的軟件時保留分歧說話的資本,好比分歧說話的菜單文本,可以把分歧說話的字符串放在統一個資本類型下的分歧資本包中,法式運轉時依據運轉時體系的culture選擇分歧的包顯示分歧說話的字符串。
新建了資本文件後就可以往資本文件中添加資本文件:
圖1 .resx資本文件可嵌入的資本類型
資本中可以添加字符串、位圖、圖標、音頻、文件等等的資本。
添加的資本都邑被保留在項目標Resources文件夾中。
2、設置資本文件的“BuildAction”屬性
Resources文件夾中的一切資本文件的“BuildAction”屬性設置為“Embedded Resource”。
3、 資本存在方法
.resx資本文件治理的資本可以用兩種存在情勢,一種是以普通的文件情勢存在於Resources文件夾中,另外一個是經由Base64編碼後嵌入到.resx資本文件中。
圖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");
留意資本的根稱號的規矩:
資本的根稱號就是這個資本文件類的全稱號。
翻開.resx資本文件響應的Designer.cs文件能看到資本類的全稱號:稱號空間.資本類名。
資本名就是某個資本在.resx資本文件中的稱號。
翻開.resx資本文件可以看到各個資本的稱號。下面圖中圖標文件IconTest.ico的稱號是IconTest。
若要檢索“字符串”資本,請挪用 GetString 辦法。
若要檢索其他類型的資本,請挪用 GetObject 辦法,並將獲得的資本顯式轉換成對應的類型。
5、多說話的資本運用
//獲得以後說話情況 CultureInfo ci = Thread.CurrentThread.CurrentCulture; //CultureInfo ci = System.Globalization.CultureInfo.CurrentCulture; Icon myIcon = (Icon)resourceManager.GetObject("IconText", ci);
以上就是的為年夜家整頓的兩種嵌入和應用資本文件的辦法,自己比擬傾向應用第二種,願望能幫到年夜家。