2010-03-22 3 views
1

Mon exe traite les documents texte et je veux pouvoir faire un clic droit sur les documents, sélectionner ouvrir avec et pointer vers mon fichier exe. Je peux double-cliquer sur mon exe et choisir un fichier à traiter avec OpenFileDialog et ça marche bien. Cependant, quand je fais ouvrir avec, je reçois une erreur FileNotFound..net C# ne trouve pas de ressources img quand ouvert avec exe

Voici le journal des erreurs:

System.IO.FileNotFoundException: attention.jpg 
    at System.Drawing.Image.FromFile(String filename, Boolean useEmbeddedColorManagement) 
    at System.Drawing.Image.FromFile(String filename) 
    at ImzaDogrulamaUygulamasi.frmCertificate.FillTreeView() in D:\VSS\SOURCE\VS2008\EGA\ImzaDogrulamaUygulamasi\ImzaDogrulamaUygulamasi\frmCertificate.cs:line 76 
    at ImzaDogrulamaUygulamasi.frmCertificate.Form2_Load(Object sender, EventArgs e) in D:\VSS\SOURCE\VS2008\EGA\ImzaDogrulamaUygulamasi\ImzaDogrulamaUygulamasi\frmCertificate.cs:line 244 
    at System.Windows.Forms.Form.OnLoad(EventArgs e) 
    at System.Windows.Forms.Form.OnCreateControl() 
    at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible) 
    at System.Windows.Forms.Control.CreateControl() 
    at System.Windows.Forms.Control.WmShowWindow(Message& m) 
    at System.Windows.Forms.Control.WndProc(Message& m) 
    at System.Windows.Forms.ScrollableControl.WndProc(Message& m) 
    at System.Windows.Forms.ContainerControl.WndProc(Message& m) 
    at System.Windows.Forms.Form.WmShowWindow(Message& m) 
    at System.Windows.Forms.Form.WndProc(Message& m) 
    at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) 
    at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) 

et voilà comment j'ajouter mes images dans mon code, toutes les ressources sont dans le même répertoire avec le fichier exe:

ImageList myImageList = new ImageList(); 

    myImageList.Images.Add(Image.FromFile("attention.jpg")); 
    myImageList.Images.Add(Image.FromFile("sandglass.jpg")); 
    myImageList.Images.Add(Image.FromFile("11.JPG")); 
    myImageList.Images.Add(Image.FromFile("checkGif.jpg")); 

    treeView1.ImageList = myImageList; 

Toute aide est très apprécié. Merci

Répondre

1

Si vous choisissez "Ouvrir avec" votre application est probablement ouverte comme étant en cours d'exécution dans le même dossier que le fichier que vous souhaitez ouvrir. C'est-à-dire que le chemin d'exécution de votre application est différent du chemin où l'exécutable est trouvé.

Ainsi, votre fichier attention.jpg est recherché par rapport à ce chemin, plutôt que le chemin d'application.

Pour corriger cela, utilisez:

string appPath = Application.StartupPath; 
myImageList.Images.Add(Image.FromFile(Path.Combine(appPath, "attention.jpg"))); 

Une autre, peut-être mieux, alternative serait d'utiliser des ressources incorporées par My.Resource au lieu de compter sur les fichiers de ressources distincts.

+0

Ne voulez-vous pas dire Application.StartupPath()? –

+0

Merci beaucoup. J'ai utilisé Application.StartupPath. Peu importe, votre réponse est exactement ce dont j'avais besoin! – artsince

+0

@Jason: fonctionne aussi bien. Il y a plusieurs façons d'obtenir le chemin de l'application. Mais vrai, le mien est nul ... je pensais que c'était VB. –

Questions connexes