.net c # не может найти ресурсы img при открытии с exe - PullRequest
1 голос
/ 22 марта 2010

Мой exe обрабатывает текстовые документы, и я хочу иметь возможность щелкнуть правой кнопкой мыши на документах, выбрать открыть с помощью и указать мой exe-файл. Я могу дважды щелкнуть по своему exe-файлу и выбрать файл для обработки с OpenFileDialog, и он отлично работает. Тем не менее, когда я открываю с, я получаю ошибку FileNotFound.

Вот журнал ошибок:

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)

и вот как я добавляю свои изображения в свой код, все ресурсы находятся в одном каталоге с файлом 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;

Любая помощь очень ценится. Спасибо

1 Ответ

1 голос
/ 22 марта 2010

Если вы выберете «Открыть с помощью», ваше приложение, вероятно, будет открыто как запущенное в той же папке, что и файл, который вы хотите открыть. То есть путь выполнения вашего приложения отличается от пути, где находится исполняемый файл.

Таким образом, ваш файл attention.jpg ищется относительно этого пути, а не пути приложения.

Чтобы исправить это, используйте:

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

Другая, возможно, лучшая альтернатива - использовать встроенные ресурсы через My.Resource вместо использования отдельных файлов ресурсов.

...