2013-02-04 46 views
1

我有一個Windows Forms項目。我有一個Resources文件夾,我想使用相對路徑的文件。這裏是我的項目樹Visual Studio 2010 Project - 無法調整相對路徑

enter image description here

的PRINTSCREEN正如你可以看到我的文件夾UserControls在那裏我有FileExplorer.cs它包含AA openFileDialog + pictureBox。我在Forms文件夾中使用這個控件。情況是,在Resources文件夾我有這個T380.jpg圖像,我想默認加載,但現在我只能通過插入它的完整路徑來做到這一點。這裏是我的代碼,我嘗試加載圖像:

private void FileExplorer_Load(object sender, EventArgs e) 
     { 
      pictureBox1.ImageLocation = @"ShoesUnlimitedAdmin\Resources\T380.jpg"; 
      pictureBox1.Load(); 
     } 

我使用Load事件的用戶控件的加載我的形象,但只有當我設置的完整路徑圖像像C:\\...等工作。我如何使用相對路徑指向項目的Resources文件夾?

+0

你在設置BuildAction嗎? – paul

+0

這是MDI形式,所以如果我的問題得到解決,答案應該是我的'Forms'目錄中的'Main_Form'的MDIparent。 – Leron

+0

不需要 - 右鍵單擊​​解決方案資源管理器中的T380.jpg文件,選擇「屬性...」,每個文件都有一個「BuildAction」屬性。這決定了VS在構建時如何處理文件。可能應該設置爲'Content'而不是'Resource'(http://stackoverflow.com/questions/145752/what-are-the-various-build-action-settings-in-vs-net-project-properties-和-wh) – paul

回答

2

如果這些圖像很小,那麼有利於將它們添加爲可執行文件中的資源,以便您可以在代碼中使用Properties.Resources並且不必在用戶計算機上部署文件。使用項目+屬性,資源。點擊「添加資源」按鈕上的箭頭,然後選擇添加現有文件。

如果它們很大(超過幾兆字節),那麼你確實想要將它們部署爲單獨的文件。你可以通過使用EXE程序的位置來找到它們,這裏有一個輔助方法,爲了清楚起見而拼寫出來:

public static string GetResourcePath(string filename) { 
     string exepath = System.Reflection.Assembly.GetEntryAssembly().Location; 
     string exedir = System.IO.Path.GetDirectoryName(exepath); 
     string resdir = System.IO.Path.Combine(exedir, "Resources"); 
     return System.IO.Path.Combine(resdir, filename); 
    } 
+0

他們小於300kb – Leron

+0

漢斯,我在我的應用程序中有類似的問題。我的一些圖像文件是在運行時生成的,因此不能設置爲項目資源。我已經驗證它們是在「Debug」文件夾中創建的。您能否提供任何見解,說明爲什麼相對路徑只能用於已標記爲資源的文件? – Jim

相關問題