2010-02-24 100 views
2

我有一個從Resources.resx加載圖像的C#自定義控件。我加載此資源投入到項目的資源,然後訪問他們喜歡的:.NET自定義控件Resources.resx

ProjectNamespace.Properties.Resources.resourcename; 

這適用於一個項目,但現在我想用我在多個項目的控制。

處理這個問題的最佳方法是什麼?將資源加載到控件.resx中?我如何從那裏訪問它們?或者我應該以完全不同的方式處理?

回答

2

即使您的控件是從其他項目中使用的,它也應該按原樣運行。

由VS生成的代碼是ResourceManager類的一個包裝,它將控件的程序集作爲構造函數參數提供給您。所以,ResourceManager總是知道在哪裏尋找資源。

+0

@Timores,謝謝。我的麻煩是,「ProjectNamespace」會改變我包含我的控制的每個項目。我將我的控件作爲「鏈接」添加到項目中,而不是作爲參考,因爲我希望它內置到DLL中。我不確定如何動態獲取「ProjectNamespace」。 – Mark 2010-02-24 17:28:20

+1

我明白了。在這種情況下,您必須忘記VS生成的代碼,並自己創建一個ResourceManager實例,並將this.GetType()作爲參數。然後,要訪問名爲resourcename的字符串,請直接調用GetString方法(或其他類型的ResourceManager的其他方法)。 更好的是,創建一個小的幫助類,它模仿VS的一個類。重要的是,它會收到您的控件的類型以獲得正確的名稱空間。 – Timores 2010-02-25 06:17:25

+0

現貨,這工作就像一個魅力。 – Mark 2010-02-26 15:42:01