2009-08-26 223 views
6

我有文件夾「圖標」。 我需要訪問它才能將圖標添加到imageList。 我使用的app.config文件中有一個相對路徑。App.config相對路徑

<add key="doc" value="..\Icons\_Microsoft Office Excel 97-2003 Worksheet.ico" /> 

和我使用下面的代碼將其添加到imgList,但它拋出System.IO.FileNotFoundException

smallImageList.Images.Add(Image.FromFile(ConfigurationSettings.AppSettings["doc"])); 

這裏有什麼問題嗎?

回答

7

嘗試將當前運行路徑:

smallImageList.Images.Add(Image.FromFile(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, ConfigurationSettings.AppSettings["doc"]))); 
+0

謝謝你,那個工作..甚至 Path.GetFullPath(ConfigurationSettings.AppSettings [「doc」]);這工作..我想知道是我在做什麼錯誤 smallImageList.Images.Add(Image.FromFile(ConfigurationSettings.AppSettings [「doc」])); – Anees 2009-08-26 12:46:22

+0

smallImageList.Images.Add(Image.FromFile(Path.GetFullPath(ConfigurationSettings.AppSettings [「doc」]))); – Anees 2009-08-26 13:06:24

+0

這應該被標記爲答案。問題似乎是'Image.FromFile'需要一個絕對路徑,而不是相對路徑。 – Oliver 2013-03-27 13:31:54

0

嘗試使用蒂爾達...

value="~\Icons_Microsoft Office Excel 97-2003 Worksheet.ico" 

哪些應該從應用程序根目錄開始你。

2

您可能需要將其與System.AppDomain.CurrentDomain.BaseDirectory連接。

我猜想FromFile是相對於當前易於改變的工作目錄而言的。另一件要考慮的事情是將圖像嵌入程序集

+0

哇,我不知道那個。多簡單多了,我的GetExecutingAssembly()解決方案... – Vinzz 2009-08-26 12:48:24

0

您的工作文件夾在程序執行過程中以某種方式被修改,您必須找到自己的路徑。

試試這個:

using System.Reflection; 
string CurrDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); 

smallImageList.Images.Add(Image.FromFile(Path.Combine(CurrDirectory,ConfigurationSettings.AppSettings["doc"]))); 
+0

喜Vinzz, 它檢索路徑 C:\ Documents和Settings \ ADMIN \我的文檔\ Visual Studio 2008的\項目\ IconsLoadinginTreeview_Files_Demo \ IconsLoadinginTreeview_Files_Demo \ BIN \調試\。 \圖標\ _Microsoft辦公室Excel 97-2003 Worksheet.ico 「..」在filPath再次拋出錯誤 – Anees 2009-08-26 13:01:16

+0

當然,您的里程可能會有所不同。如有必要,在那裏或那裏添加一個額外的'..'。我不知道你的圖標真的在哪裏; o)順便說一句,似乎你已經找到了解決方案,不是嗎? – Vinzz 2009-08-26 13:21:11

2

轉到屬性,找到「複製到輸出目錄」屬性,然後選擇「始終複製」。那麼它應該沒問題。希望它會有所幫助。