資源檔顧名思義就是存放資源的檔案。資源檔在程式設計中有著自身獨特的優勢,他獨立於來源程式,這樣資源檔就可以被多個程式使用。同時在程式設計的時候,有時出於安全或者其他方面因素的考慮,把重要東西存放在資源檔中,也可以達到保密、安全的效果。那麼Visual C#所使用的資源檔中到底存放哪些東西呢?在用Visual C#建立資源檔大致可以存放三種類型的資料資源,分別是位元組數組、各種對象和字串。本文將結合一個程式例子來具體說明用Visual C#是如何建立資源檔的。
一.用Visual C#在建立資源檔用到的一些概念和理論:
在.Net FrameWork SDK中的一個名字叫System.Resources名稱空間,在此名稱空間中為應用程式提供了許多建立、儲存和使用資源檔的類和介面。其中有一個類叫ResourceWriter,Visual C#就是通過調用這個類來實現建立、儲存資源檔的。
二.Visual C#如何建立資源檔:
首先要繼承一個ResourceWriter類,然後調用ResourceWriter類的一個方法Generate ( ),就可以產生一個資源檔了。具體語句如下:
ResourceWriter rw = new ResourceWriter ( "My.resources" ) ; rw.Generate ( ) ; |
此時在磁碟的中就會產生一個名稱為"My.resources"的資源檔,但此時的資源檔沒有任何內容,下面我們就來看看如何往資源檔中添加資源。
三.在資源檔中添加資源:
在ResourceWriter類中提供了一個AddResource ( )方法,這個方法的作用就是往資源檔中添加資源的。在Visual C#中對不同的資源有著不同的加入方式。
(1).加入位元組數組,文法格式為:
| public void AddResource ( string , byte [ ] ) ; |
注釋:其中string是在使用資源檔的時候,此位元組數組在程式中的的唯一識別碼
(2).加入對象,文法格式為:
| public void AddResource ( string , object ); |
注釋:其中string是在使用資源檔的時候,此對象在程式中的唯一識別碼
在本文程式中,我們利用這種調用方式來加入表徵圖和圖象,具體如下:
Icon ico = new Icon ( "Demo.ico" ) ; Image canceloff = Image.FromFile ("cancel-off.png") ; Image cancelon = Image.FromFile ( "cancel-on.png" ) ; Image cancelover = Image.FromFile ( "cancel-over.png" ) ; Image okdown = Image.FromFile ( "ok-down.png" ) ; Image okoff = Image.FromFile ( "ok-off.png" ) ; Image okon = Image.FromFile ( "ok-on.png" ) ;rw.AddResource ( "demo.ico" , ico ) ;//在資源檔中加入表徵圖 //以下是在資源檔中加入圖象 rw.AddResource ( "cancel-off.png" , canceloff ) ; rw.AddResource ( "cancel-on.png" , cancelon ) ; rw.AddResource ( "cancel-over.png" , cancelover ) ; rw.AddResource ( "ok-down.png" , okdown ) ; rw.AddResource ( "ok-off.png" , okoff ) ; rw.AddResource ( "ok-on.png" , okon ) ; |
(3).加入字串,具體文法如下:
public void AddResource ( string1 , string2) ;
注釋:其中string1是在使用資源檔的時候,此字串在程式中的唯一識別碼在本文的程式中,是如此使用的:
| rw.AddResource ( "MyStr" , "從資源檔中讀取字串!" ); |
至此我們已經建立了一個資源檔,並且在資源檔中加入了若干個資源,當然在這之後,還應該注意,儲存此資源檔,並關閉資源檔,具體如下:
四.建立資源檔的來源程式代碼:
通過上面的論述,我們不難理解下面這些代碼。下列程式碼的作用就是,建立一個名稱為"My.resources"資源檔,並且在此資源檔中加入一個表徵圖資源,若干個圖象資源,和一個字串資源。具體代碼如下:
CreatResources.cs: using System ; using System.Drawing ; using System.Resources ;class CreatResource { public static void Main ( ) { ResourceWriter rw = new ResourceWriter ( "My.resources" ) ; Icon ico = new Icon ( "Demo.ico" ) ; Image canceloff = Image.FromFile ("cancel-off.png") ; Image cancelon = Image.FromFile ( "cancel-on.png" ) ; Image cancelover = Image.FromFile ( "cancel-over.png" ) ; Image okdown = Image.FromFile ( "ok-down.png" ) ; Image okoff = Image.FromFile ( "ok-off.png" ) ; Image okon = Image.FromFile ( "ok-on.png" ) ; rw.AddResource ( "demo.ico" , ico ) ; rw.AddResource ( "cancel-off.png" , canceloff ) ; rw.AddResource ( "cancel-on.png" , cancelon ) ; rw.AddResource ( "cancel-over.png" , cancelover ) ; rw.AddResource ( "ok-down.png" , okdown ) ; rw.AddResource ( "ok-off.png" , okoff ) ; rw.AddResource ( "ok-on.png" , okon ) ; rw.AddResource ( "MyStr" , "從資源檔中讀取字串!" ) ; rw.Generate ( ) ; rw.Close ( ) ; } } |
最好還要提醒一下,在成功編譯成執行檔案後,在執行此檔案的時候,必須保證在此執行檔案的相同目錄,存在上面代碼中提到名稱的表徵圖和圖象,否則在建立資源檔的時候是會出錯的。
五.總結:
可見用Visual C#建立資源檔並不是一個複雜的過程,在下一篇文章中,我們將介紹如何在Visual C#使用資源檔中資源。這才是Visual C#資源檔編程的重點和痛點。當然文中所使用的資源檔就是以本文中建立的資源檔。