2009-08-26 43 views
6

Tôi có thư mục "Biểu tượng". Tôi cần truy cập giống như vậy để thêm biểu tượng vào imageList. Tôi đang sử dụng tệp app.config trong đó có đường dẫn tương đối.Đường dẫn tương đối App.config

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

và tôi đang sử dụng mã dưới đây để thêm nó vào imgList, tuy nhiên nó ném System.IO.FileNotFoundException:

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

vấn đề ở đây là gì?

Trả lời

7

Hãy thử thêm con đường chạy hiện tại:

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

Cảm ơn điều đó, hoạt động đó .. Path.GetFullPath (ConfigurationSettings.AppSettings ["doc"]); này hoạt động .. tôi muốn biết là im doin một cái gì đó sai trong smallImageList.Images.Add (Image.FromFile (ConfigurationSettings.AppSettings ["doc"])); – Anees

+0

smallImageList.Images.Add (Image.FromFile (Path.GetFullPath (ConfigurationSettings.AppSettings ["doc"]))); – Anees

+0

Điều này phải được đánh dấu là câu trả lời. Vấn đề dường như là 'Image.FromFile' mong đợi một đường dẫn tuyệt đối, không phải là đường dẫn tương đối. – Oliver

0

Hãy thử sử dụng một Tilda ...

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

nào nên bắt đầu bạn từ gốc ứng dụng.

2

Bạn có thể cần ghép nối với System.AppDomain.CurrentDomain.BaseDirectory.

Tôi đoán rằng FromFile có liên quan đến thư mục hoạt động hiện tại dễ bị thay đổi. Một điều khác cần xem xét là nhúng các hình ảnh vào trong assembly

+0

Chà, tôi không biết cái đó. đơn giản hơn nhiều so với giải pháp GetExecutingAssembly() của tôi ... – Vinzz

0

Thư mục làm việc của bạn bằng cách nào đó đã được sửa đổi trong quá trình thực thi chương trình của bạn, bạn phải tìm đường dẫn của riêng bạn.

Hãy thử điều này:

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

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

hi Vinzz, nó truy xuất đường dẫn C: \ Documents and Settings \ ADMIN \ My Documents \ Visual Studio 2008 \ Projects \ IconsLoadinginTreeview_Files_Demo \ bin \ Debug \. . \ Icons \ _Microsoft Office Excel 97-2003 Worksheet.ico ".." trong filPath một lần nữa ném lỗi – Anees

+0

Tất nhiên, số dặm của bạn có thể thay đổi. Thêm thêm '..' ở đó hoặc ở đó nếu cần. Tôi không biết biểu tượng của bạn thực sự ở đâu; o) Btw, có vẻ như bạn đã tìm ra một giải pháp, phải không? – Vinzz

2

Đến tài sản, tìm 'Sao chép vào thư mục Output' bất động sản và chọn "Copy luôn". Sau đó, nó sẽ được sử dụng tốt. Hy vọng nó sẽ giúp.

Các vấn đề liên quan