2009-08-26 22 views
6

"Simgelerim" klasörüm var. imageList'a bir simge eklemek için aynı erişime ihtiyacım var. Göreli bir yol olan app.config dosyasını kullanıyorum.App.config bağıl yol

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

ve ben imgList eklemek için kod aşağıda kullanıyorum, ancak System.IO.FileNotFoundException atar:

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

Ne oluyor burada? Geçerli çalışan yolunu ekleyerek

cevap

7

Dene:

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

Bunun için teşekkürler, bu çalışma ..even Yol.GetFullPath (ConfigurationSettings.AppSettings ["doc"]); Bu çalışır ... bilmek istedim smallImageList.Images.Add (Image.FromFile (ConfigurationSettings.AppSettings ["doc"])) bir şey yanlış bir şey mi? – Anees

+0

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

+0

Bu, yanıt olarak işaretlenmiş olmalıdır. Sorun, Image.FromFile’in mutlak bir yol beklediğinden göreceli değil. – Oliver

0

bir Tilda kullanmayı deneyin ... uygulama kökünden sizi başlamalıdır

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

.

2

Bunu System.AppDomain.CurrentDomain.BaseDirectory ile bitiştirmeniz gerekebilir.

FromFile öğesinin, değişmeye eğilimli olan geçerli çalışma dizinine göre olduğunu tahmin ediyorum. Göz önünde bulundurulması gereken diğer bir şey, görüntülerin montajı

+0

Vay, bunu bilmiyordum. çok daha basit benim GetExecutingAssembly() çözümü ... – Vinzz

0

içerisine yerleştirmektir. Çalışma klasörünüz program yürütme sırasında bir şekilde değiştirilmiştir, kendi yolunuzu bulmalısınız. , Özellikleri

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

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

hi Vinzz, o yolu C alır: \ Documents and Settings \ Belgelerim \ Projeler \ IconsLoadinginTreeview_Files_Demo \ IconsLoadinginTreeview_Files_Demo \ bin \ Debug \ Visual Studio 2008 \ \ ADMIN. . \ Simgeler \ _Microsoft Office Excel 97-2003 Worksheet.ico filPath içindeki ".." yine atma hatası – Anees

+0

Tabi ki, kilometreniz değişebilir. Gerekirse orada ya da orada ekstra bir '..' ekleyin. Simgelerinizin nerede olduğunu bilmiyorum; o) BTW, zaten bir çözüm bulmuşsunuz gibi görünüyor değil mi? – Vinzz

2

Git özelliği 'Çıkış Dizin Kopyala' bulup "her zaman Kopyala" yı seçin:

bu deneyin. O zaman iyi olmalı. Umarım yardımcı olur.