2010年2月19日 星期五

.NET - 把圖檔、字串等資訊放入resource檔內

美妙人生blog有關於C#及Visual Basic的資源檔利用方法,
不過C++/CLI畢竟有它的包袱,
使用上沒有那麼的方便,
不過這個功能實在太好用了!
所以花了一點時間把這個作法研究出來了! ^^
  1. 加入資源檔(.resx格式)

  2. 在資源檔內,可以加入『字串』、『現有檔案』…等檔案。

  3. 像是已經存在的圖檔,可以用『現有檔案』。
    .NET環境會預設將檔案作為該資源檔案在專案內的『名稱』,但是也可以自行修改。
    IDE內也會有預覽圖示,可以看到該圖檔的樣子。

  4. 『加入字串』,會有一個編輯器。
    『名稱』就是資源檔在專案內用的名稱,後面的『值』就是字串的內容。

  5. 在程式內要呼叫這些資源時,在CLI需要借助ResourceManager來叫用。
    因此需要加入下述兩個namespace:

    • ResourceManager類別:在System::Resources裡
    • Assembky類別:在System::Reflection裡
    using namespace System::Resources;
    using namespace System::Reflection;
    
  6. 叫用方法如下,應該很容易看得懂。
    範例是在Form呼叫的時候,顯示圖檔"2010Kosemai.jpg",
    並且將Form的title改成t1這個資源的值。
    private: System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e)
    {
     ResourceManager^ rm = gcnew ResourceManager("Test.myTest", Assembly::GetExecutingAssembly() );
     this->Text = rm->GetString("t1");
    
     Object^ obj = rm->GetObject("2010kosemai");
    
     this->pictureBox1->Image = dynamic_cast(obj);
    }
    

利用這個方式加入的『現有檔案』,
編譯後可以刪除,攜帶執行檔案的時候,也不需要附加這個『現有檔案』。

但是需留意,在重新編譯時,這個『現有檔案』仍然會需要,
因此在刪除檔案的時候,需要留意!

範例程式:

沒有留言:

張貼留言