2009-08-26 30 views
6

Tengo la carpeta "Iconos". Necesito acceder a la misma para agregar un icono al imageList. Estoy usando el archivo app.config que tiene una ruta relativa.Ruta relativa de App.config

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

y estoy usando el código de abajo para añadirlo a imgList, sin embargo, tiros System.IO.FileNotFoundException:

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

Cuál es el problema aquí?

Respuesta

7

Trate de añadir la ruta de ejecución actual:

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

Gracias por que, que trabajan ..even Path.GetFullPath (ConfigurationSettings.AppSettings [ "doc"]); este works..i quería saber es im haces algo mal en smallImageList.Images.Add (Image.FromFile (ConfigurationSettings.AppSettings [ "doc"])); – Anees

+0

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

+0

Esto debería haber sido marcado como la respuesta. El problema parecía ser que 'Image.FromFile' espera una ruta absoluta, no relativa. – Oliver

0

intentar usar un tilde ...

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

que debe comenzar desde la raíz de la aplicación.

2

Es posible que necesite concatenar eso con System.AppDomain.CurrentDomain.BaseDirectory.

Supongo que FromFile es relativo al directorio de trabajo actual que es propenso a cambios. La otra cosa a tener en cuenta sería la incorporación de las imágenes en la asamblea

+0

Guau, no sabía eso. mucho más simple que mi GetExecutingAssembly() solución ... – Vinzz

0

la carpeta de trabajo de alguna manera ha sido modificada durante su ejecución del programa, usted tiene que encontrar su propio camino.

Prueba esto:

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

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

hi Vinzz, recupera la senda C: \ Documents and Settings \ ADMIN \ Mis documentos \ Visual Studio 2008 \ Projects \ IconsLoadinginTreeview_Files_Demo \ IconsLoadinginTreeview_Files_Demo \ bin \ Debug \. . \ Icons \ _Microsoft Office Excel 97-2003 Worksheet.ico ".." en el filPath nuevamente arrojando el error – Anees

+0

Por supuesto, su millaje puede variar. Agregue un ".." adicional allí o si es necesario. No sé dónde están sus iconos realmente son; o) Por cierto, parece que ya ha encontrado una solución, ¿verdad? – Vinzz

2

Ir a propiedades, encontrar 'Copiar a directorio de salida' propiedad y seleccione "Copiar siempre". Entonces debería estar bien. Espero que ayude