用來查找 .resources 文件的命名方式與命名任何其他種類的資源相同(注意追加到 Resource1.resources 文件中的項目默認命名空間的使用方法),只是 .resources 擴展名是假定的,并且不能包括在名稱中。為了更方便,如果您碰巧將一個 .resx 文件命名為類型名稱,則 .resources 文件和程序集的名稱將從類型確定:
// Use the type to determine resource name and assemblyResourceManager resman = new ResourceManager(this.GetType());
一旦已經創建了資源管理器的實例,就可以通過使用 GetObject 方法并強制轉換為合適的類型,從而按名稱找到嵌套資源。如果使用 .resx 文件來處理字符串資源,則可以使用 GetString 方法,該方法將執行到 System.String 類型的強制轉換。

設計器資源
缺少用于 .resx 文件的合適的編輯器使它們在使用除字符串資源以外的任何其他資源時非常困難。您不僅必須通過手動編寫代碼才能在運行時輸入數據,而且無法在設計時看見資源的使用情況;例如,窗體的背景圖像。
幸運的是,設計器再次在這里幫助了我們。如果打開 Visual Studio .NET Solution Explorer,并選擇 Show All Files 按鈕,您將看見每個組件(無論它是窗體、控件還是簡單的組件)都有相應的 .resx 文件。這是為了讓資源與組件的屬性保持關聯,這種關聯是在 Property Browser 中設置的。例如,如果設置窗體的 BackgroundImage 屬性,那么不僅在設計器中窗體將顯示背景圖像,而且窗體的 .resx 文件將包含該圖像的對應項。同樣,如果在相同窗體上設置 PictureBox 控件的 Image 屬性,則 .resx 文件同樣會增大以便包括該資源。這兩項都可以在圖 7 中看到。

圖 7. 組件的 .resx 文件
每個組件的 .resx 文件將作為 .resources 文件進行編譯和嵌入,就像已經將您自己的 .resx 文件添加到項目中一樣,這將使資源能夠在運行時被組件使用。除了組件的 .resx 文件中的項之外,設計器還會將代碼添加到 InitializeComponent 中,以便加載組件的資源管理器,并使用從資源獲得的對象來填充組件的屬性:
namespace ResourcesApp { public class Form1 : Form { ... private void InitializeComponent() { ResourceManager resources = new ResourceManager(typeof(Form1)); ... this.pictureBox1.Image = (System.Drawing.Bitmap)resources.GetObject("pictureBox1.Image"); ... this.BackgroundImage = (System.Drawing.Bitmap)resources.GetObject("$this.BackgroundImage"); ... } }}
注意 ResourceManager 對象是使用組件的類型來構造的,該類型用來構造組件的 .resources 資源名稱。還要注意設計器在命名資源時所使用的命名約定。對于組件字段上的屬性,名稱的格式是:
<fieldName>.<propertyName>
對于組件本身的屬性,名稱格式是:
$this.<propertyName>
如果您想添加供組件本身使用的自定義字符串屬性,您可以這樣做,但要確保與設計器生成的名稱格式不同。